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.
This seems a bit surprising.

i.e. 
```php
$things = $c->getAndSetMultiple(['thing-1', 'thing-2'], $callback);
```
if `$callback` returns `null` for 'thing-2', `$things` won't even contain `thing-2`. I feel like `$things` should always contain all requested keys.

Opinion?