Solver Max Fails

Implement a resolved context callback and `rez env` command line option to limit the resolution algorithm based on the number of failures.

This reimplements a useful feature that has been lost during the rez 2.0 effort.

Although on the mailing list we discussed the option of a 'max time' option, I think a maximum number of fails gives a more concrete and repeatable way of managing the resolve process.  A time sensitive process could make debugging harder, for example.

That said, this is not mutually exclusive - it would possible to implement a callback that support both max fails and max time if required.

This branch was taken from the 2.0 at the beginning of the week as it wasn't clear what the state of the other branches was.  I don't think it will introduce conflicts, but might require modifications with respect to the change from `settings` to `config`.