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 is one of the reasons why this particular backend didn't work out as well as I would have hoped and is left in an experimental state. Because this entire class is very abstract and generic, we don't necessarily know what is appropriate in this case. I think that doing nothing if the last backend's value can't be incremented is the most sane thing to do.