Relationships do not create the correct sub-entity

I'm going to try to explain this but it might be better having a look at the object graph and test cases!

![Object graph](http://i61.tinypic.com/2hqqd1k.png)

`Root` allows sub entities of `Parent` to be stored against it, but the `Parent` entity description of any subentites is returned instead of the specific `ChildA` or `ChildB` entity descriptions.

730554f adds 2 failing test cases for one-to-one and many-to-many relationships.

- [x] **one-to-many relationships** (fixed in 834de26)
This was fixed in the same way as when fetching entities based on parent entities, looking up the hash of the entity name from `entityTypeCache` (line [231](https://github.com/project-imas/encrypted-core-data/blob/master/Incremental%20Store/EncryptedStore.m#L231) and [267](https://github.com/project-imas/encrypted-core-data/blob/master/Incremental%20Store/EncryptedStore.m#L267)).
I think this also needs to be applied to the other 2 relational types.

- [x] **one-to-one relationships** (fixed in c36fe53)
I think these types of relationships with subentites will need a join on the destination entities table (where appropriate) so instead of:
```sql
SELECT name, oneToOne__objectid FROM ecdRoot WHERE __objectID=?;
```
There should also be another column for the type of the `oneToOne` entity:
```sql
SELECT ecdRoot.name, ecdRoot.oneToOne__objectid, ecdParent.__entityType FROM ecdRoot INNER JOIN ecdParent ON ecdParent.__objectid=ecdRoot.oneToOne__objectid WHERE ecdRoot.__objectid=?;
```
- [x] **many-to-many relationships** (fixed in 8ea8aa3)
This has deeper issues as the relation table name columns are based on the relational subentities not its parent entities. For example the following table is created for the above object graph:
```sql
CREATE TABLE ecd_manyToMany_manyToManyInverse ('ChildA__objectid' INTEGER NOT NULL, 'Root__objectid' INTEGER NOT NULL, PRIMARY KEY('ChildA__objectid', 'Root__objectid'))
```
But the primary key column need to be based on the super entity:
```sql
CREATE TABLE ecd_manyToMany_manyToManyInverse ('Parent__objectid' INTEGER NOT NULL, 'Root__objectid' INTEGER NOT NULL, PRIMARY KEY('Parent__objectid', 'Root__objectid'))
```
And also when querying for many-to-many relations a `JOIN` needs to be performed, and the type column added if needed:
```sql
SELECT ecd_manyToMany_manyToManyInverse.Parent__objectid, ecdParent.__entityType FROM ecd_manyToMany_manyToManyInverse INNER JOIN ecdParent ON ecdParent.__objectid=ecd_manyToMany_manyToManyInverse.Parent__objectid WHERE ecd_manyToMany_manyToManyInverse.Root__objectid=?
```

I'm going to try looking at the other issues, but I think I'm along right lines with the last 2 issues?