Separates the client key creation to a LWRP

Makes it easier for other cookbooks, such as Openstack, to create their keys
Notifies when the keyring is changed

Also handles updating when the capabilities change
Adds some type_of restrictions
Fix provider with best practices
* use load_current_resource
* use Mixlib:ShellOut
* ...
Fixes some issues found by testing
Adds whyrun support
Refactor find_node_ip_in_network

Refactor find_node_ip_in_network so that it is simplier and works
with multiple interfaces, networks and ipv4/ipv6.
Clarifies the whyrun output
Properly accesses the node's dmcrypt attribute
Adds configuration to allow MDS to run
Fixes the duplicate run of the create-or-get command
Allows Client LWRP to run on nodes that aren't mons
Fixes the case where no mon IPs can be found

When searching through mons for an IP in the public subnet, if no routes
match the public network, it returns the mon's entire network object
which then gets outputted to the ceph.conf file and generally breaks things.
This prevents that occurrence.
Adds the ability to store a client secret instead of a keyfile
Adds automatic mounting of CephFS
Initialise testing tools

- add needed infrastructure (Gemfile, Berksfile)
- disabled two non-critical rubocop tests

To make use of these, run:

    bundle install
    bundle exec strainer test
Integrate tests into travis.yml
foodcritic needs ruby >= 1.9.3
add some basic kitchen suites

TODO include chef-solo-search to have meaningful recipe tests in the
absence of search().
fix travis-ci

stolen from
https://github.com/opscode-cookbooks/wordpress/blob/master/.travis.yml