Initial version for code review

Because the initial development was occurring on master, there isn't an easy way to do code review. This pull exists solely as a means to code review the entire project. Any changes will be put straight into master and this pull will be closed and the `initial-code-review` branch deleted. All future development will use pull requests into master to facilitate code review.
When would having the misses be useful? If you have a list of ids that you're retrieving from the database, do you care which ones don't exist? I feel like most of the time you would want them to be filtered out because there isn't anything to display to the user. Otherwise the caller would have to filter them out every time.

This is how `ByteCache` was written which made sense to me. Maybe using `getMultiple` directly is a better choice if you do really want to keep the misses.