Option type

This PR is adding basic option type functionality to libdynd. So far it includes the basic type object and parsing support.

```
In [1]: from dynd import nd, ndt, _lowlevel

In [2]: ndt.type("3 * 2 * ?int32")
Out[2]: ndt.type('3 * 2 * ?int32')

In [3]: ndt.type("{ _0 : int64, _1 : datetime, _2 : string, _3 : option[string] }")
Out[3]: ndt.type('{_0 : int64, _1 : datetime, _2 : string, _3 : ?string}')
```