Break out const_addr_of.
Implement most of adjustment handling for consts.

Changes the ad-hoc closure adjustment into using adjustment info instead
of being separately driven from types, and likewise for autoderef.

Also takes care of autoref (the cases we should be seeing in consts,
at least, since we can't be doing method calls which would need the
ref-to-vec mode), which didn't quite work right previously.

However, "dereference" of a newtype isn't handled yet....
Let const_deref "dereference" newtypes.
Make a const translation test match TESTNAME=const
Don't print addr_of(addr_of(e)) as `&&e`, which means something else.
Add some tests for const auto-deref.

const-autoderef.rs is based on an example from jdm in IRC (but the
quadruple-pointer part is entirely my fault).
Don't copy const data to do an autoderef+autoref.
Const dereference works now, so allow it.
add a TotalOrd impl for the unit type
treemap: make set_advance public
treemap: indentation fixes
treemap: inline the TreeSet wrappers
treemap: add more tests for set difference
Add deriving_eq to Cell.
auto merge of #5318 : jdm/rust/deriving_cell, r=pcwalton

r? @pcwalton
core: Add vec::raw::mut_buf_as_slice
auto merge of #5305 : brson/rust/mut_buf_as_slice, r=brson

r?

Like `buf_as_slice` but for mutable pointers and slices.
rt/core: impl os::getcwd() in rust ref #4812
core: rt/core: impl os::env() in rust ref #4812
rt/core: port os::list_dir to rust ref #4812