Predicates support

Moved here some things from #22 to work on in separately. One thing I want to change is predicate/predicate-type approach. I want to 

- [x] make `Predicate` a normal type
- [x] denote `TitanGraph` with a schema type and use it as an input for the `Query` step
- [x] indexes:
   + [x] restrictions on predicates
   + [x] querying index with checking the predicate
   + [x] uniqueness setting (see [titan docs](http://s3.thinkaurelius.com/docs/titan/current/indexes.html#_composite_index)) — influences `query` out-arity: `OneOrNone` or `ManyOrNone`
- [x] interval predicates for vertex-centric queries
- [x] test different index queries with berkleydb backend (because it shows warnings for the full-graph searches)