Versioning fixes

Hi,

Here's a first set of commits to do versioning (see PR #1025 for a draft of where I'm planning to take it next.)

Right now it's still not relying on command such as "git describe" but its building the internal infrastructure for it.

I'm also fixing a bug from PR #1045 where the git sha1 was only being generated when the tree was clean (please take a look @smarterclayton)

I'll try to do this in small steps, so let's get this one figured out first and I'll send a PR for the next step.

@lavalamp Can you please take a look? I think you're probably the best reviewer for this PR...

Thanks,
Filipe

Ah, not necessarily, in the future "gitVersion" will be the output of `git describe` which is typically something like `v0.1-85-g6ff350ca5018` where v0.1 is the most recent annotated tag in the history, 85 is the number of commits that follow it and 6ff350ca5018 is the current sha1.

I'll add comments to the fields to make that clear. Hang on, an updated commit coming soon.

Cheers,
Filipe