Reworked docstrings in NumpyDoc style.
Added the natsort_keygen function.

The natsort_keygen function is used to create a wrapped version of the
natsort_key which can be used to supply options when calling the natsort_key.
This function is intended to depreciate the public natsort_key in the future.
Performance optimizations and fixed recursive bug.

By profiling it was found that many of the initial design desicions for natsort
had poor performance implications.  For small input, these do not make a
difference, but for large inputs the penalty can be large.  These include small
micro-optimizations in natsort_key (such as choosing explicit arguments over
argument unpacking, which has noticable overhead when sorting ~100000 items),
and python-specific refactoring optimizations (i.e. isinstance vs. exception
catching vs. regex checking).

Additionally, the default value for the key has been switched from
'lambda x: x' to 'None', which is both a performance optimization and a design
improvement.

Next, natsort_key had the 'key' option added because it was found that handling
this in natsort_key is much faster than in natsort_keygen.

Last, the bug that made the natsort_key options not get passed to recursive
natsort_key calls has been fixed.
Added the order_by_index function.

The order_by_index function is a convenience function that helps the
user order a list by the index list that is returned by the *_index
functions.

Additionally, some import cleanup was done in the natsort.py file.
Added additional unit tests.

Added tests that verify options are passed to sub-functions, and also
test new functionality.
Added a reverse option to natsorted.

This option makes natsorted simulate more closely sorted. The reverse
option is also added to the index_* functions and versorted. This
way the python internals are doing the reversing, not you.

The natsort command line program was updated with this change.
Added .coveragerc and coveralls support.

This is a bit more formal method to track coverage than printing out the
results in TravisCI.

The way natsort is set up, 100% coverage is only possible on python3... the
python2 branch does not have the problem of unorderable types.