Additional refactoring

I made some additional refactoring so that the library is more modular and less dependent on concrete classes. ```Sonido\Sonido``` is now typehinted against interfaces. This will let the library be interoperable with a wider variety of frameworks and setups.