Add Vector

Implement some builtins.
Start on fixing k_means.
  Typechecks, but fails at c++ codegen.

w
Add superclass constructor for collection types
Misc fixes to codegen. Work on kmeans.

Option and Indirection types are expected to be shared_ptrs in the library.
So now the code generator produces these types.
(Alternatively, we could migrate the library to use raw pointers).
Functioning draft of annotation metaprogramming. Minor parser refactoring into datatypes and operators in addition to rules.
Bugfix for explicit type/expr params. Added metaprogram example.
Merge branch 'master' into macros