Enhance auto_encode to take number of struct fields

emit_struct and read_struct takes an additional len:uint parameter which tells
us how many fields the struct we are working on has.

This is required to implement an Encoder for the msgpack [1] serialization
format. To serialize a struct with msgpack you have to use arrays and the size
of the array has to be know before each of the elements are written out. JSON
as an example doesn't have this problem as it uses '[' and ']' delimiters for
arrays.

[1]: www.msgpack.org
Rename memcpy, memmove, memset to prevent any confusion with the C equivalents.

Closes #4203.
doc: Fold information from the memory model interlude in the tutorial elsewhere
Adds priv qualifiers where they have been commented out before implementation.

Updates #4386.
Make std::sync::semaphore() public
libstd: Fix std test. rs=busted
test: XFAIL issue_3882 due to strange Windows failure. rs=failure
allow logical negation operator (!) to be overloaded
test: add test for overloading logical negation operator
Comment out test_decode_form_urlencoded again. Filed issue 4449. rs=breakage
Add core::private::run_in_bare_thread

This begins executing Rust code in a fresh context with no runtime environment
Make ast_util::path_name_i take a slice vector, eliminate a bad copy
libstd: Ignore failing test on Windows
Long lines
libsyntax: Fix name generation in condition! macro
support clang 3.2
Merge pull request #4453 from crabtw/clang3.2

support clang 3.2
Merge pull request #4452 from apasel422/cond-macro-fix

libsyntax: Fix name generation in condition! macro
Merge pull request #4445 from apasel422/notop

Allow logical negation operator (!) to be overloaded
Merge pull request #4443 from wting/4386_add_privs

Adds priv qualifiers where they have been commented out before implementation.