Add MockOdbGatewayService

Extract non-OBD methods from ``ObdGatewayService`` to a common abstract class (``AbstractObdGatewayService``) and add a new service named ``MockObdGatewayService`` that will help us to debug the application. 

You will see that the ``ObdGatewayService`` only implements ``Start`` (and connect to OBD), ``Stop`` and ``executeQueue``. All other methods (create, bind, show notification, add job to queue, destroy) have been moved to the base class(``AbstractObdGatewayService``). The ``MockObdGatewayService`` will send the same bytes whenever a Command is executed there(``job.getCommand().run(new ByteArrayInputStream("41 00 00 00>41 00 00 00>41 00 00 00>".getBytes()), new ByteArrayOutputStream());`` -- three commands because there are fake commands like fuel economy that are actually two commands).

I believe that the above is required in order to make debugging the application easier and help implementing new features (and testing the existing ones).

You will also see that the context is not injected in the ``AbstractGatewayService`` service anymore (was not working, probably because it is abstract ?). but instead is passed explicitly when the service is bound 

Finally, the ``executeQueue`` method is started in a new ``Thread`` (and not on the UI thread) to lighten up the UI thread because there was a number of "too much work" messages -- this has the consequence that ``stateUpdate`` needs to be called through ``runOnUiThread``.