Expose some of the underlying AWS info about instances

* This helps with staying in Puppet, for things like finding the IP
  addresses
* In particular this helps with the PE example, which previously had
  instructions to go look something up in the web console
* This makes these properties read-only, using the same pattern as found
  in other Puppet types: https://github.com/puppetlabs/puppet/blob/master/lib/puppet/type/file/ctime.rb#L15
Update example to use new puppet resource feature
Additional acceptance tests on instance properties

 - Added the ability to add extra configuration properties to the
   instance template with the :optional field (this can be used to
   insert read-only properties one by one to verify that they can't
   be set)
 - Discovered a problem with how exit codes are returned from puppet
   apply when an empty string was passed into the AWS SDK as the region
   It turns out inside of Puppets apply.rb, that if a catalog
   application yields particular values, that those exit_code values
   will be eaten unless --detailed-exitcodes is specified.  In this
   particular case, the value 4 is returned when the AWS SDK throws an
   exception, and without --detailed-exitcodes, the exception was
   written to stderr, but the code was swalloewd and puppet apply
   returned the value 0.
  - Added tests to ensure than hypervisor and virtualization_type are
    returned properly, that read-only properties cannot be set, and that
    basic validation checks on instance are correctly failing
  - Marked tests pending that return EC2 network addresses, since the
    code currently doesn't wait for these to become available before
    returning a populated instance.
Merge branch 'expose-more-instance-info'

* expose-more-instance-info:
  Additional acceptance tests on instance properties
  Update example to use new puppet resource feature
  Expose some of the underlying AWS info about instances

closes #26