Introduce base::Optional

Add optional class similar to guava optionals. Supports pod reference and non-trivial types.