Sorting people in memory and guarenteeing order of tokens alphabetically

The randomly generated tokens were causing John and Jane to appear in
different orders randomly causing the tests to fail.

By using a TreeMap and prefixing their tokens so they are always in the
same order this should allow the tests to consistently pass.
New cache method to determine if someone is home

Get everyone in the home and then loop to see if someone is home.

This is implemented in the cache interface and uses the cache methods to
minimize the number of redundant database queries to determine this
state.