Refactor to utilize cache more effectively

- Added lookupAdapter and lookupSerializer - responsible for managing
local cached instances
- Added modelFor() to adapterFor() (consistent and discussed in PR
#2044)
- Added to & clarified some documentation