allow logical negation operator (!) to be overloaded
test: add test for overloading logical negation operator
Adds priv qualifiers where they have been commented out before implementation.

Updates #4386.
Add William Ting to AUTHORS
libstd: "target_os = win32", not "target_os = windows". rs=bustage
doc: Fix spelling error in macro tutorial
Inlining methods/functions in core.

Also inlining some functions which take functions as arguments.
add Option methods for swap_unwrap and map_consume
add Option map_consume_default method
avoid unwrap in Option::map_consume implementation
add Option methods for in-place mutation
core: Align cmp::le() with the other implementations

Also add comments reminding that IEEE 754 requires unusual semantics for
comparison operators as applied to NaNs (x != x, if x = NaN), in case someone
in the future wants to get clever.
Make () actually size 0
For `for` loop bodies, translate the type of the closure
based on the expr_loop_body expression and not the inner closure
Fix long lines in for loop trans change
One more place where for loops and their bodies need to be unconfused.
Correct (I hope) amd64 ABI handling for empty structs
Make empty structs debug-printable
Make vectors (& old ports) of zero-size types allocate one byte each.
Factor out base::get_discrim_val from const translation