Cleaner approach to things related to stores and queries

* got rid of the Free[Command]
* RDFStore is now a typeclass
* it is made of 3 three independent ones: GraphStore, SparqlEngine, Transactor
* there is an additional Lifecycle typeclass for start/stop operations
  * it comes with a default instance doing nothing
* syntax enhancement are made available from within the typeclass themselves
The better solution come to think of it would be to pass in an `ExecutionEngine` into the `JenaSparqlHttpEngine` . That would move the responsibility for creating the thread pool quite clearly to the user. He could use a same thread EC and have the current effect, or use a different one. 

```scala
class JenaSparqlHttpEngine(implicit ops: RDFOps[Jena])(implict ec: ExecutionEngine )
```
Of course what he really should be doing is rewrite this whole part of Jena so that the API is not blocking.