[API] Returns JSON encoded array during failure, uses MySQL stored routine

If the number of rows returned by the query is 0, the method will return a JSON encoded array that contains an error code of 1 with an error message of "No rows were returned". The query has also been changed to use a stored routine called "GetDesktops().
[BUGFIX] Multiple calls to methods that use stored procedures no longer throw exceptions after the first call

Added a bugfix from a php.net user contribution that fixes crashing when multiple stored procedures are called within script execution.
[FEATURE][WIP][DOCS] Overhauled Inventory class which now inherits from a base class called AbstractInventory

The Inventory class has been renamed to AbstractInventory (abstract) and includes two new abstract methods (protected) as well as regular method (protected). The abstract methods (ConvertRowToJSON and GetStoredProcedureName) are used for converting a db row to a JSON-compatible array and for obtaining the stored procedure name. The regular method (GetByType) makes use of the two abstract methods and queries the database to retrieve all hardware of a specific type (as defined by the passing parameter).

A new Inventory class (final) has been created which will implement the two abstract methods. Note: This is NOT a breaking change. Existing code should continue to function without issue. Instead, the usability has increased by allowing users to inherit from AbstractInventory and add their own types of hardware.

Various documentation has also been updated or added.