Controller to Abstract Class

All of the API controllers are constructed by being passed an object which encapsulates the application's state -- configurations, dependencies, et cetera.

Since they all share a common constructor signature, which serves only to initialize an internal variable so that they can refer to this state as needed, it doesn't make sense for Controller to be an interface, rather it should be an abstract class that provides this constructor so it doesn't have to be laborously repeated in each derived class.

Effected this change.
CanadaPost Update

Updated the CanadaPost class to reflect the fact that Controller is now an abstract class, not an interface.
CanadaPost\Quote Update

Updated the CanadaPost\Quote class to reflect the fact that Controller is now an abstract class, not an interface.
Suppliers Update

Updated the Suppliers class to reflect the fact that Controller is now an abstract class, not an interface.
Merge branch 'controller_abstract'
Controller::BadRequest

Now that Controller is a class rather than an interface, common functionality likely to be reused between controllers can be concentrated there.

Pursuant to this, added a protected static BadRequest method, which throws a \CivicInfoBC\HTTP\Status object which encapsulates HTTP Status 400, including the option to attach a previous Exception.
Controller Documentation

Added documentation to the Controller class.
CanadaPost\Quote Update

Updated the CanadaPost\Quote class to use the Controller::BadRequest method, rather than its own identical method.
Controller::Get

Added the static Get method to the Controller class.

This method attempts to retrieve a certain query string value, and throws an exception which will cause an HTTP 400 if that value is not found.
CanadaPost\Quote Update

Updated the CanadaPost\Quote class to use the Controller::Get method (rather than supplying its own, essentially identical method).
EliMina

Added the EliMina controller/endpoint, which calculates the cost of buying several of EliMina's books and optionally sending them to a certain postal code.