Allow puppetising of LDAP entries through custom type/provider

e.g.

```puppet
ldap_entry { 'cn=Foo,ou=Bar,dc=baz,dc=co,dc=uk':
  ensure      => present,
  host        => '1.2.3.4',
  port        => 389,
  username    => 'admin',
  password    => 'password',
  attributes  => { :givenName   => 'Foo',
                   :objectClass => ["top", "person", "inetorgPerson"]}
}
```

Still a work in progress (and wholly untested as of yet). Shout if there's anything obviously amiss @bilco105 @spjmurray