Add type factory to default-construct data.

Given an instance 't' of a type, one can now call t.make() to obtain a
default-constructed data instance corresponding to t.
Be more clean on what is happening.
Implement type-based record unflattening.
Fix attribute finding and printing.
Add setters for vast::port.
Add a synthetic event generator.

This commit adds a new source called "test" that can be selected with "-I test"
on the command line. It produces random events according to a given schema.
We support sampling from all types except container types (and the currently
unused enums). For example, the schema below generates three events, in a
round-robin style:

    type foo = int &default="uniform(10,20)"

    type bar = count &default="pareto(1,4)"

    type baz = record
    {
      a: real &default="normal(0,1)",
      x: bool &default="uniform(0,1)",
      b: string &default="uniform(10,105)",
      d: addr,
      r: record
      {
        i: int &default="uniform(-1,1)",
        x: port &default="normal(50,10)"
      }
    }

The new &default attribute can take a distribution with parameters. Currently
we can draw from uniform, gaussian, and pareto distributions. It's not always
clear what this means for a given type. For example, for strings we take the
random sample and mod it 256 and use the original value as seed for linear
congruential engine to crank out random values from a uniform distribution over
the ASCII character set---pretty much an arbitrary choice. Similarly, for IP
addresses we hash the sample drawn from the distribution using 128-bit Murmur
and use that as value for the internal IP address data.

Feedback about how to generate meaningful random values would be much
appreciated.