Features/configuration

add support for configuration reading from multiple sources, sources are ordered by `priority`.

- `Default` has the lowest priority `0`, 
- `Git` has priority `10`,
- `Yaml` has priority `20`,

there  is also support for two extra lists `#{name}_add` and `#{name}_remove` which give extra configuration options:

```ruby
get_arr(name) + get_arr("#{name}_add".to_sym) - get_arr("#{name}_remove".to_sym)
```

new configuration providers can be added as plugins

closes #102, closes #86, closes #15

the new format for `git config` is `[:check1, :check2]`, please let me know what you prefer for handing the old format, an note, migration, or support for the old format
for handling we could subclass `Git` and create `GitOld` with priority `11` to be just after `Git` and that will handle `checks` as an array even if it was not starting with `[`.

plugins get `Configuration` and `Pluginator` instances so they can be reused there - see `Rubocop` plugin

added `list`/`plugins`/`enable`/`disable` with forwarding to plugins, check the readme => https://github.com/jish/pre-commit/blob/features/configuration/README.md#enabling--disabling-checks--warnings

rubinius fails randomly, moved it to allowed failures, otherwise it should be good.