Add support for ensure=>latest in git::clone

Enhance the git::clone Puppet resource to allow specifying that the
local checkout should be kept in sync with the remote tracking branch
head.

A parameter was also added to allow shallow clones and the recursive
checkout feature has been left on by default but given a parameter that
can be used to turn it off.

Change-Id: Iad0c7828e7cc4a7016e47e5b00dc25647a765f40