Implemented better handling of Quantities with mutable magnitudes

Only if the magnitude is a `numpy.ndarray`, the in place math
operations take place. In any other case, another object Quantity
object is created and returned.

See #104
Implemented in place conversion in the registry.

The converters methods `from_reference` and `to_reference` now take
an optional argument (named `inplace` and defaulting to False) to
indicate if the conversion should be done in place or not.

`UnitRegistry.convert` takes the same argument.

This is convenient when operating with big numpy arrays and do not
want to allocate extra memory.

Note: Context mediated transformations are not done in place yet.
Quantity.ito method now does the conversion in place when possible.
Refactored some helpers for tests.
Fixed tests
Refactored tests to use AssertQuantityEqual and AssertQuantityAlmostEqual

Also created a contextmanager to capture log outputs.
Add __call__ method to LazyRegistry.
Implemented checks in testsuite to assert that warnings are only emmited when expected.

Each test class captures the logging output for warnings and check at tear down that
there was not a warning. If any warning is expected you must explicitly capture within
the test using `with self.capture_log() as buffer:`