implement Pry global and pry-local configuration.

maybe best explained with an example:
```
[1] pry(main)> Pry.config.color
=> true
[2] pry(main)> _pry_.config.color
=> true
[3] pry(main)> _pry_.config.color = false
=> false
[4] pry(main)> Pry.config.color
=> true
[5] pry(main)> _pry_.config.color
=> false
[6] pry(main)> Pry.config.foobar = "hello!"
=> "hello!"
[7] pry(main)> _pry_.config.foobar
=> "hello!"
```

__GLOBAL__

`Pry.config` is the global configuration that all pry sessions use. it is an instance of `Pry::Config` with a default or fallback on an instance of `Pry::Config::Default`.

__LOCAL__

`_pry_.config` is the local configuration for a pry session. it is an instance of `Pry::Config` with a default or fallback on `Pry.config`. when a local configuration key is set(for example, `_pry_.config.color = false`) it takes precedence over the default or fallback, in this case: `Pry.config`. 

__GLOBAL/LOCAL PRECEDENCE__

an instance of `Pry::Config` has a concept of a 'default' or parent. any keys not found local to `Pry::Config` are searched for in a parent. this means that `Pry.config.foo = 42` will be seen in ALL pry sessions(active or yet to be started) but when a single pry session calls `_pry_.config.foo = 43` the local configuration takes precedence. if `_pry_.config` could not find that key it would fallback on `Pry.config`. if you want to fallback on `Pry.config` again (incase the value has changed), you can say `_pry_.config.forget(:some_key)` where `:some_key` could be `:color` or `:foo`.

__LAZY__

`Pry::Config::Default` is lazy. no configuration values are read or set until `Pry.config.<something>` is called. `<something>` is read on call and and its value cached. other configuration values remain lazy until called. the lazy-load only applies to the default configuration options pry defines (see `Pry::Config::Default`).

__SHORTCUTS__

a number of "config shortcuts" are still available, for example it is
possible to say `_pry_.input = StringIO.new` or `Pry.input = StringIO.new`. the
shortcuts are maintained for the Pry class and instances of the Pry class through
`Pry::Config.shortcuts`.

`Pry::Config::Convenience` adds a method called `config_shortcuts` which can be used
to setup shortcut access to `some_obj.config.blah` as `some_obj.blah`

__LIGHT(ER)__

pry no longer depends on 'openstruct' or uses it anywhere throughout `lib/pry`. 
`Pry::Config` has turned out to be a suitable alternative.


__ANYTHING MAY BE A CONFIG__

any object (in theory) could act as `Pry::Config` with the include of `Pry::Config::Behavior`.

```ruby
class Foo
  include Pry::Config::Behavior
end
```

__DUP__

when a default value is read into a local configuration object(`_pry_.config`) it is also duplicated through `#dup` to prevent mutation being visible in the default. some objects cannot be dup'ed nor mutated(immediate's) and others, such as Module, return anonymous classes/modules that we would prefer to not dup to retain the class or module's name. for that reason, classes or modules who hold onto globally reference-able state are not recommended as values in the config.


__CHECKLIST__

- [x] fix all the broken tests
- [ ] update commands to always use `_pry_.config`.
- [x] add new Pry::Config tests
- [x] review 
- [x] sign off from @banister