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 
From my earlier poking around it seems like it gets threaded through to `resolve_path` and used here: https://github.com/jroesch/rust/blob/generalized-where-clause-parser/src/librustc/middle/resolve.rs#L5319.