Feature/facter 2/fact 239 aggregate resolution dsl

This pull request allows facts to be created without creating resolutions and allows resolutions to be created with a given resolution type.

Opening a fact by itself:

```ruby
Facter.define_fact(:network) do
  # interact with an individual fact
```

Resolutions can be created within a fact definition:

```ruby
Facter.define_fact(:network) do
  define_resolution(:linux) do
    # Create a named resolution called linux
  end
end
```

Define different resolution types:

```ruby
Facter.add(:network, :type => :aggregate) do
  chunk(:ipv4) do
    # ...
  end
end

Facter.add(:id, :type => :simple) do
  setcode '/usr/bin/id'
end
```