Add a cache to BlockManager, so that we can get rid of the block cache in
User.
The cache stores up to three blocks -- a request block, a user block and
an anonymous (IP) block. Using object identity to compare keys means
that we can avoid serializing the WebRequest and UserIdentity.
Bug: T345683
Change-Id: I7639766519861690a759629144c8680767539293