Error-Handing Fix

Improved the Error::Wrap method, which wraps a callback and converts all PHP errors/warnings that occur during its execution into exceptions.

When converting errors/warnings to exceptions, the error_reporting value has to be checked.  This is because the PHP @ operator doesn't actually stop errors/warnings from being generated, it simply temporarily sets error_reporting to zero.  Therefore, in order to honour the usage of this operator within the wrapped callback, an exception must not be generated if error_reporting===0.

However, this also meant that if the error_reporting value was zero for whatever other reason the exception conversion mechanism would fail, even if errors/warnings were not deliberately being suppressed by whoever wrote the callback code.

To rectify this the Error::Wrap method now changes the error reporting value to EALL|E_STRICT before invoking the supplied callback, and reverts to the old value afterwards.
CanadaPost\Quote Fix

Fixed a bug in the deserialization method of the CanadaPost\Quote class.  The cubed_weight property was being deserialized as an integer, when the property may legitimately have values with fractional components.  This led to spurious exceptions being thrown in response to certain rates requests.
EliMina Update

Changed the EliMina interface from pseudo-procedural to object-oriented.

The EliMina class now represents an order placed on the Eli Minar book sale form, rather than merely providing utilities for manipulating an abstract such order.

Additionally, the class now has methods for calculating the total cost of an order, including placing a GetRatesRequest with the Canada Post XML API.

Pursuant to calculating the total cost of an order, added the EliMina\Pricing class, which encapsulates a calculated price (subtotal, S&H, tax, and total).