convert DAGService to an interface

Here is DAGService  conversion, leaving the spiltter as-is.

Looking at BlockService, it would makes sense to interface that too, but for me at this point I'd rather have a RPC backed DAGService because its a much more naive way to add objects.

I would perhaps like to run multiple BlockExchange nodes on the same datastore, so that I might publish objects to different networks without exposing the relationship between my different addresses.
There is alot more that goes into that, but its something I've been thinking about.


@jbenet: I guess this check is there to protect against a runtime panic that could occur otherwise when looking up `n.Blocks` but I feel like @whyrusleeping. These should be rooted out. `NewDAGService()` already eliminates the chances of working with a `DAGService == nil` but maybe it should have an additional `error` to return and use it to check if `bserv.BlockService` is nil so that we are safe against that as well.