Return Future objects from DataStore actors.

This allows us to:
1. handle timeouts
2. handle any exceptions that might occur