Changed Callback to have a parameterized type

Now there is more type safety. No more willy-nilly casting from Object
to the type you need. Also, the datamanager methods now expect a certain
parameterized callback so that types are safer. This prevents
ClassCastExceptions.

To use callbacks, now when you create them, you create a Callback<T>
where T is the type you expect to be returned. Eclipse should warn you
if T is not the type that is expected for a DataManager method.