Move refactoring

Refactor the moves-based-on-type stuff:

- reimplement the analysis to be more comprehensive, add more tests
- remove `move` keyword, `move` bindings, and capture clauses (parser ignores them)
- fix various bugs that cropped up
- rewrite how moves are handled in trans to be more straightforward

I had planned to refactor this into several commits but time ran out.  I can do that tomorrow to make it easier to review if desired.

There are still a few pending to do items:

- I want to improve the error messages for moves that occur due to a by-move binding
- I want to improve the workaround for ty_param with def-ids, but not sure of the best way

r? @pcwalton