Move settings to Travis::Settings and make it more agnostic

This commit achieves a few things:

* we don't need to pass "repo" to settings, we just use agnostic
  callback. This is better in my opinion, because it's not repo specific
  and it's not even specific to AR records
* settings can be used in other classes as well, there was an idea to
  add a few settings to user, it will be probably the easiest way to use
  the same code I used for repository
* I refactored settings code to remove legacy approach. First version of
  settings was added as a thin wrapper over hash. After a while I
  switched direction to use more structured approach with collections
  and I also tried to make external API in a way we can change internals
  more easily