Hash and Arrays for arithmentic operations

Using a hash and array in operations.

I think to move on from here the inference needs to change from simple
inductive inference to creating a constraint system and solving for
allowed values...
Introduce context object

The inference needs to start tracking more than just the single type. To
do so a context object is being introduced so that an inference can
result in the type, free variables, variable constraints, etc.
WIP