Updates and fixes

CHANGELOG:
----------------------

* Raw Typecking: The TCMonad is now parametric by `r` (i.e. `RType r ` instead of `Type = RType ()`). This is useful for keeping track of refinement while still in the raw typechecking phase (e.g. for casts).

* Disabled sorts when boiling down constraints to fixpoint: Everything is converted to `F.FInt` to avoid having to deal with the "fixBase" when breaking down container types to their parts.

 - All sorts are converted to `FInt`, except for functions whose structure is preserved and their contents are converted to `FInt`,  and also the type for `Prop`, which needs to return a "bool" for fixpoint to function properly.

 - These changes require the updated version of fixpoint, where the string constant literals are not added to fixpoint at `toFixpoint`, but instread they are added in NanoJS when `FInfo` is generated. So, CAUTION, if at some point string literal constants are added in fixpoint instread of NanoJS.

* `subTypeContainers` (CGMonad.hs) breaks down a subtyping constraint on container types to constraints on its parts.
The top-level refinements of the container types strengthen the parts:
```
    Γ |- {v:T1 | P1 ∧ P3}       <: { v:T1 | P1' ∧ P3'}
    Γ |- {v:T2 | P2 ∧ P3}       <: { v:T2 | P2' ∧ P3'}
    −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
    Γ |- {v:T1/P1 + T2/P2 | P3} <: {v:T1/P1' + T2/P2' | P3'}
```

* Downcasts: Replaced K-vars in the casted type with the type specified by the cast and propagate the cast type strenghtened with the refinement from the relevant part of the casted expression's type. I.e.:
```
    Γ |- e :: { Te | re }
    −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
    Γ |- Cast(e, { Tc | rc }) :: { Tc | rc' }
```

    where `rc' = rc ∧ re` (strengthening the respective parts of the types)

To do this, `zipType1` (resp. `zipType2`) walks through two types and applies a function `f` on the refinements of equivalent structurally parts of the types, while preserving the structure of the 1st (resp. 2nd) argument.


ISSUES:
-------------

* Support for objects is incomplete and flimsy. Most of the changes above can be treated similarly in the case for objects.

* The main TODOs right now are: object access with dynamic keys, object field update, etc.