Adds Python3 support

These changes get Python 3 working, but have not been tested with earlier Python versions.. Python 3 drops the `unicode()` medthod, and I susupect my fixes (changing `unicode()` to `str()`) will raise some errors in Python 2.

Along with these Python 3 specific fixes, The internal datatable `options` object (subclassed from Dict) was accessed like it had attributes( for instance, `options` supported calling `options.search` as an alias to `options['search']`) This behavior was removed, and all lookups are now called with the key index.