add a type/provider for git::config

which can *actually* determine the user home. unlike inline_template()

this is a w.i.p.
reformat nicely, add "unless" for idempotency

remove finaly ',' so this will work on ruby 1.8.7
and reformat it nicely. unfortunately, it doesn't work yet...

    igalic@levix ~ % puppet apply --trace -e " git_config { 'alias.switch=checkout': } "
    Notice: Compiled catalog for levix.box in environment production in 0.03 seconds
    Error: Got nil value for name
    /home/igalic/.gem/ruby/2.1.2/gems/puppet-3.6.2/lib/puppet/type.rb:646:in `[]='
    /home/igalic/.gem/ruby/2.1.2/gems/puppet-3.6.2/lib/puppet/type.rb:2224:in `set_name'
    /home/igalic/.gem/ruby/2.1.2/gems/puppet-3.6.2/lib/puppet/type.rb:2196:in `initialize'
    /home/igalic/.gem/ruby/2.1.2/gems/puppet-3.6.2/lib/puppet/resource.rb:314:in `new'
    ...
ensure we fill the `name´ also

when using title_patterns, make sure we also fill the name.
for this purpuse, we add an extra set of ()s around the pattern.

we move validation into the type, out of the property(:value). a note of
a bit of a ruby quirk:

   :absent =~ /.+/
   => 0
   if 0 then puts 'truth' end
   => truth

pull in documentation from git::config
replace the git::config with git_config call

retain the contract of the type (including the section.key parsing)
introduce flusing

this still doesn't seem to solve the problem that the execution actually
fails, e.g.:

  Error: /Stage[main]/Main/Git_config[merge.tool]: Could not evaluate:
  Execution of 'git config --global merge.tool 'vimdiff3'' returned 1:
strip value before comparing

the value is returned with a \n
change properties to parameters

because they are not discoverable!
Fix the type

Get rid of flush and all setters. Extract the check into insync?. Add
sync to call out the necessary bits of what used to be flush.
Merge pull request #1 from mhaskel/type

Get rid of flush and make everythign better
simplify code: no cross-calling betw type&provider

we *simply* override value and value= and be done with it.

in order to make sure that `value` actually works, we *just* have to set
all other properties it needs ;)
"identity" lambda doesn't do a thing, remove it

as the name suggests, `identity` only returns the thing itself.
since we're not using it for anything (e.g.: lower-casing, or
upper-casing, cutting down to 8 char ;), we can just as well remove it.
Merge pull request #32 from igalic/type

add a type/provider for git::config