Implement type checker enforcement to prevent array<T> <: array<int, T>
Summary:
When the `--safe_vector_array` type checker flag is set, this diff enforces that a vector-like array may not be used where a hashtable-like array is required.
Currently, Hack assumes the following:
```
array<T> <: array<int, T>
```
The flag makes it such that there is no subtyping relationship between `array<T>` and `array<int, T>`.
Reviewed By: eshrews
Differential Revision:
D4720058
fbshipit-source-id:
d492fe5d0c53c7e3cfe5385104c3f4c34d793be9