Begin using c++11 features

This is mostly to start a discussion; no need to merge this immediately.

See here for reference on c++11 feature support in compilers: https://wiki.apache.org/stdcxx/C++0xCompilerSupport

I'm using six features here:
* `nullptr` constant - basically, just a `0` constant that's only valid for pointer types - since gcc 4.6 and MSVC 10
* Range-based / enhanced for loops - since gcc 4.6 and MSVC 11
* `auto` (deduced variable types) - since gcc 4.4 and MSVC 10
* variadic templates - since gcc 4.4 and MSVC 11
* enum classes - since gcc 4.4 and MSVC 11
* constexpr - since gcc 4.6 with initial support in the latest CTP of MSVC 13 (2014)

(All these are available in clang 3.1 and up)

Depending on gcc 4.6 means on debian squeeze and wheezy, we'd have to use a the non-default, explicitly versioned 'gcc-4.6' package (which I believe adds -4.6 to the name, so we'd have to adjust the makefile).

With respect to MSVC support, we can either:
* Not use constexpr (i.e. not apply that commit)
* Not support anything but that latest CTP (which may or may not work, since the support is apparently incomplete; I haven't tried it yet)
* Use some preprocessor magic to get rid of the constexpr keyword on msvc and live with potentially sub-par performance.

FWIW, I think the three most useful features here are the range-based for loops (which wouldn't be difficult to start using more places), auto type deduction, and variadic templates (particularly how I'm using them to get rid of the C-style variadic `Compiler::call` method.

We can also pick gcc 4.4 as a target and still get some useful features.

Is anyone using a current version of avian with MSVC? I tried a while back and gave up.

Thoughts? Concerns?