Simplify the interface to check_fn by pulling some of the madness out to its callers
auto merge of #5309 : nikomatsakis/rust/simplify_check_fn, r=nikomatsakis

Simplify the interface to check_fn by pulling some of the madness out to its callers.

rs=refactor
librustc: Replace all uses of `fn()` with `&fn()`. rs=defun
libsyntax: Stop parsing bare functions in preparation for switching them over
test: Remove newtype enums from the test suite. rs=deenum
libstd: Remove all newtype enums from std and core.
librustc: Remove newtype enums from librustc
libsyntax: Remove newtype enums from libsyntax. rs=deenum
doc: Remove documentation on newtype enums.
libsyntax: Stop parsing newtype enums
test: Fix tests. rs=tests
librustc: Remove old-style operator overloading
librustc: Lint the old `drop` destructor notation off