BRANCH: libpandas native core experiments
Summary of implementation approach
- Base `pandas::Array` class
- Implement dtype-specific Array subclasses and use dynamic dispatch to invoke generic array methods
- Hold NumPy arrays internally
- For data types that don't have a well-defined NA values, use a bitmask to store null/not-null

I adapted several bits of code from github.com/libdynd/dynd-python to save me time sorting out issues with NumPy's PyArray_API global variable and other fun stuff. We'll need to add a copyright notice to the LICENSES directoy

Demo:

``` python
In [1]: import pandas.native as nt

In [2]: arr = np.arange(10)

In [3]: parr = nt.to_array(arr)

In [4]: parr
Out[4]: <pandas.native.Array at 0x7f51dfce3e40>

In [5]: parr.dtype
Out[5]: PandasType(int64)

In [6]: parr[3]
Out[6]: 3

In [7]: from pandas.native import NA

In [8]: parr[3] = NA

In [10]: parr[3]
Out[10]: NA

In [11]: parr[3] = 12

In [13]: parr[3]
Out[13]: 12
```
