Add DAGBuilder::typeContext().

This will be very useful when plugins create DAG nodes.
Rename lex source to be clearly C++.
Don't use angle brackets for a local header.
Fail harder if we can’t create a builtin.
Trivial: typo.
Checkpoint plugin work.
Extract PosixError into separate header, source.

We will want PosixError in things like POSIX-specific plugins (e.g., SysctlPlugin).
Separate platform-{agnostic,specific} sources.

We don’t actually support platform tests yet (that’s something to be done by plugins) but start structuring Support/fabfile for the day when we do.
Reset Bytestream after outputting a StructureType.
Add more assertions to dag::Structure::Create().

We should always have at least the values indicated in our Type. We might also have ‘subdir’, ‘args’, etc., but what’s in our Type is a minimum.
No need to require an L-value here.

We might want to pass ValuePtr() for defaultValue, so just copy the shared_ptr: that’s how they’re designed to be used.
Create Plugin::Descriptor.

The plugin registry needs to store static information about plugins, which we will call a Plugin::Descriptor.

This also means that we don't really need header files for plugins any more.
Add a “null” Plugin.
Pass Function::Create() a const scope reference.

We don’t specifically *need* an R-value reference, and this allows more flexibility when writing plugins.
Trivial: drop unnecessary name qualification.
Add integer function to sysctl plugin.

Also refactor out some common functionality.
Compile the plugin registry.
Another useful assertion.
Always create type int the same way.
Add parser support for plugins.