Changes to `GraphMapper`

- Includes changes from #7 
- Fixes the tests for `GraphMapper`
- Generalises graph/subgraph mapper. …
 - Removes the multiple dictionaries being used to store data about
   subvertices and subedges.  While relatively fast these seem like
   a latent bug (if further functions are added and they are no longer
   in sync).  The new accessor functions are also pretty fast.
 - Added two new functions to retrieve subedges and subvertices which
   match a predicate.  These functions are used to implement
   `get_subvertices_from_vertex` and `get_partitioned_edges_from...`.
 - Will remove the need for #9.
 - The reworked `GraphMapper` passes all tests the previous one did (those that are now fixed).