Implement cast for basic myrial types

int(x) => LONG_TYPE
float(x) => DOUBLE_TYPE
string(x) => STRING_TYPE
boolean(x) => BOOLEAN_TYPE

Builds on #217.
I realize that my habit of commenting on the `-` line of the diff instead of `+` line makes the quotes out of context. the change i'm referring to here is `int` -> `INT`