Use a ReadWriteLock rather than a single, global lock to memoize in dagger.

In server-side apps we have clocked Dagger's LRU cache locks as the third-most contended lock, and this permits much more parallelization.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=54797822
Prefer LHM over HashMap, and remove a stray synchronized keyword.
Merge pull request #336 from cgruber/readwritelock

Use a ReadWriteLock rather than a single, global lock to memoize in dagger.