Implement parsing and conversion of generalized where clauses

Going to tentatively open a PR before I move on to other things tonight. I think everything should be good minus a failing test case for region bounds (gonna push that now, i.e 'a : 'b). r? @nikomatsakis 
Strictly speaking, we probably want to accept `'a : 'b + 'c`. At least we do that today elsewhere. But we can file a follow-up issue about it.