Add support for 0-based partition IDs

Initial goal is to allow user commands to specify partition IDs as short integers `[0, ring_size)` instead of hash values. May consolidate other features such as Yokozuna's logical partitions later.
1. I'm fine if we want to keep passing in the ring, but then the function should live in `riak_core_ring` imo, so we can do the proper guards on the function.
2. Partial functions are standard erlang imo. At some point, even when you don't have types, we need to consider the input sanitized. Sprinkling checks through every layer of the codebase is a peril of dynamic langs imo. The first place we plan to use this function we know we will have well formed partition identifiers (from the vnode themselves)
3. That may be helpful but again I think is maybe a little too defensive programming. Like I mentioned in my reply to 2, the first place we will probably get these identifiers is from the vnode itself (or the ring), in which case we know they are valid and lie on a "boundary".