Support for custom services and overrides (addresses #59)

Here's a proposed solution for #59 which allows you to add custom service to classname mappings in the `ServiceFactory`. Example:

```php
$factory = new ServiceFactory();
$factory->registerService('foo', 'My\\Custom\\Namespace\\Foo');
$service = $factory->createService('foo', new Credentials(null, null, null), new Memory());
```

This also allows you to override the default services included in the library; just register another service with the same name.

I've also included PHPUnit tests.