Initial commit
Initial commit.

I'll clean up/finish the unit tests later.
Accidently a duplicate test project with the wrong name.
Almost full set of unit tests (~90% coverage) for Option.

Some minor fixes and changes on Option.
Most major is that flatten is a property rather than a method now.
'var something = Option.Some(42).flatten' reads easier.
Removed unused namespace includes.
Reorganised/renamed.

The project is getting more things than just Option, so, renamed it.
Match is a very simplistic version of a match pattern, it lacks all the syntactic sugar though, so bleh.