Add support for additional numeric types

decimal.Decimal and subclasses of numpy.number are now numeric types.
Make Quantity only accept numerics as magnitudes

When the input magnitude is not a numeric type or list/tuple that can be
converted to an ndarray, raise a TypeError.
Make Quantity add/sub return NotImplemented

The Python docs specify that when an overloaded operator is not
implemented for a particular type, the operator method should return
NotImplemented. This allows the interpreter to try fallback
operations (e.g. reversing the operation) to try and find another
method that will work.
Refactor Quantity mul, div, and pow operators

Create methods_imul_div and _mul_div to centralize the multiplication
and division operator methods. Also make multiplication, division, and
power methods return NotImplemented when appropriate.
Remove redundant magnitude computation
Switch to reStructuredText style docstrings
Merged master
Moved compatibility module to a subpackage
Updated header
Moved code to compat subpackage and ajusted imports
Added TransformDict from 3.4
Implemented function and cache to get equivalent units.

Usage:

>>> ureg = pint.UnitRegistry()
>>> ureg.get_equivalent_units('meter')

but also:

>>> ureg.get_equivalent_units('[length]')

Todo:
- order output according to some logical criteria
- speed up process to build cache
- enable contexts for this operation
Better handling of non-multiplicative units multiplied by numbers

Implemented the `__used` attribute for multiplication and division.

See Issue #86
Started benchmark suite
Updated benchmarking
Added context support for equivalencies
Added compatible method to Quantity and made it context aware

- Rename equivalent to compatible

See #89
Merge branch 'benchmark' into develop
Use the cache in get_base_units and get_dimensionality. Added benchmarks.
Fix. get_dimensionality should look in the dimensionality cache.