WIP: Refactor libs

DO NOT MERGE

I'm trying to clean up the `configure_replicaset` and `configure_shards` methods. This PR is just for others to review. Even when it is actually close to being well factored, it will need to be entirely rewritten to ensure backward compatibility.

TODO:
- [ ] make ReplicasetMember sortable
- [ ] make ReplicasetMember comparable (especially to default values in http://docs.mongodb.org/manual/reference/replica-configuration/)
- [ ] extract chef-node to ReplicasetMember converter, describe how this might work for zookeeper, serf
- [ ] test calls to external libs, esp mongo gem
- [ ] simplify error handling (just fail fast?)

I like it! Patch added.