Remove un-necessary synchronization in ShadowWrangler.

Closes #1100.

ShadowWrangler has the following mutable members which may be affected by the decrease in synchronization:
- shadowMap: Not modified after the constructor.
- metaShadowMap: Accesses are synchronized within getMetaShadow.
- planCache: Race condition introduced: a cached value may now be overwritten. It is not clear that this is a problem.
- shadowConfigCache: Race condition introduced: a cached value may now be overwritten. It is not clear that this is a problem.

Overall, there does not appear to be a compelling reason to synchonize these methods. Alternatively, synchronizing them on different locks should also fix the deadlock.
Implement `Toast#getXOffset()` and `Toast#getYOffset()` in the shadow

Calling the real offset methods results in a NullPointerException, as
`mTN` is null.  This implements the methods similarly to how `getGravity()`
is done.
Merge pull request #1401 from Snapchat/cash_blockers

Fix Deadlock in ShadowWrangler.
Merge pull request #1413 from MeetMe/toast-getoffset

Implement Toast.getXOffset() and Toast.getYOffset() in the shadow.
Added ability to specify an exception for setDataSource(). Abstracted data source spec into an opaque ID class that will be reused by ShadowMediaPlayer in a future commit.
Merge pull request #1415 from kriegfrj/md-retriever-setdatasource-exceptions

Custom exceptions for MediaMetadataRetriever.setDataSource.
Merge pull request #2 from robolectric/master

Pull commits from robolectric