Add [pointer] type constructs

* '~' to declare pointer
* '@' to dereference pointer. Read as 'get the value at'
* '&' to get the address of variable

We now do-away with the use of void to keep with the language being
strictly-typed. Otherwise a pointer may be cast to void to get around
the languages type system.

WIP