Install missing Boost headers

http://hydra.nixos.org/build/9328376
Revert "Make ifs and asserts tail-recursive"

This reverts commit 273322c7732093a354e86df82cf75d6604b8bce8.
If a dynamic attribute name evaluates to null, remove it from the set
The expr of AttrNames/DynamicAttrDefs is always an ExprConcatStrings
Document null dynamic attrs
Fix typos
Fix passing meta attribute to buildenv.nix

Since the meta attributes were not sorted, attribute lookup could
fail, leading to package priorities and active flags not working
correctly.

Broken since 0f24400d90daf65cf20142a662f8245008437e2c.
Update release notes for 1.7
Generate release notes again
Document nix-env -q --json
Remove unnecessary null pointer checks

Fixes #225.
nix-build: Fix --cores flag
Fix -j and other flags when using the daemon
Allow recovery from isValidPath RPCs with an invalid path

Currently, clients cannot recover from an isValidPath RPC with an
invalid path parameter because the daemon closes the connection when
that happens.

More precisely:

  1. in performOp, wopIsValidPath case, ‘readStorePath’ raises an
     ‘Error’ exception;

  2. that exception is caught by the handler in ‘processConnection’;

  3. the handler determines errorAllowed == false, and thus exits after
     sending the message.

This last part is fixed by calling ‘startWork’ early on, as in the patch
below.

The same reasoning could be applied to all the RPCs that take one or
more store paths as inputs, but isValidPath is, by definition, likely to
be passed invalid paths in the first place, so it’s important for this
one to allow recovery.
Fix tabs
Make /dev/kvm optional

The daemon now creates /dev deterministically (thanks!).  However, it
expects /dev/kvm to be present.

The patch below restricts that requirement (1) to Linux-based systems,
and (2) to systems where /dev/kvm already exists.

I’m not sure about the way to handle (2).  We could special-case
/dev/kvm and create it (instead of bind-mounting it) in the chroot, so
it’s always available; however, it wouldn’t help much since most likely,
if /dev/kvm missing, then KVM support is missing.
Don't interpret strings as format strings

Ludo reported this error:

  unexpected Nix daemon error: boost::too_few_args: format-string refered to more arguments than were passed

coming from this line:

  printMsg(lvlError, run.program + ": " + string(err, 0, p));

The problem here is that the string ends up implicitly converted to a
Boost format() object, so % characters are treated specially.  I
always assumed (wrongly) that strings are converted to a format object
that outputs the string as-is.

Since this assumption appears in several places that may be hard to
grep for, I've added some C++ type hackery to ensures that the right
thing happens.  So you don't have to worry about % in statements like

  printMsg(lvlError, "foo: " + s);

or

  throw Error("foo: " + s);
Merge commit 'refs/top-bases/debian' into debian
Add w3m to Build-Depends