EXP-153. Support joins on entity_ids.

Changes the entityId implementations to support joins. EntityIds are created by
users or when reading from a KijiInputSource and all entityIds will have a list
of "components" which are either the formatted entityId components or a single
component reflecting the raw HBase rowkey. The join semantics are as follows:
1) If a user wants to join two pipes ultimately sourced from a KijiInput, this
is okay as long as the components are the same. For hashed keys, this will
compare the hashed keys so there is a theoretical possibility that two rows
could be considered the "same" even though they are different entity_ids that
happened to hash to the same value.
2) If a user wants to join a Kiji table with a data source like a text file,
this is okay because the user can create an entity id from the components (e.g.
EntityId("hello", "world")) and join that with the entity_id coming out of the
Kiji table.
3) If a user wants to join a Kiji table that has a hashed key with a data source
containing the "unhashed" value, the join will fail unless the user does the
hashing to match that of what we stored.

Reviewer: robert