Optional type

Done:
- returning double or none
- comparison of optional(any_type) with none

TODO:
- optional(type) as argument
Is this really limited to Array types?  It looks like you could pass in any type here.