Use SimpleFuture for ShadowAsyncTask so `onPostExecute` exceptions are not swallowed

Fixes #686.

`SimpleFuture` provides a very basic implementation of the necessary functionality for ShadowAsyncTask and doesn't swallow
exceptions in the same way that `FutureTask` does. It is a little weird as it doesn't allow cancellation while running but it
seemed overkill to add this functionality as Robolectric is single threaded.
Make sure that `onPostExecute` exceptions are differentiated from `doInBackground` exceptions if `onPostExecute` runs synchronously
Reformat `ShadowAsyncTask`
Merge pull request #697 from coreydowning/async-future-rewrite

Stop ShadowAsyncTask swallowing exceptions in `onPostExecute`