(RE-1138) support versions less than zero as RC

Currently, a project must be either tagged with 'rc' or have an odd minor
version and specify odd_even versioning to get into the RC repos. We have a
request to support a project versioned with major less than 1 as RC repos as
well. This commit adds a new version strategy called 'zero_based' in which a
project that has a major version of 0 will always be considered not-final. This
is opt-in, which prevents breaking any existing usage.

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
Merge pull request #282 from MosesMendoza/RE-1138/master/zero_based_versioning

(RE-1138) support versions less than zero as RC
(maint) Fix specs to run even after a package bootstrap

Prior to this change, if the packaging repo was bootstrapped
(i.e. so that it lives inside another repo), and that
repo specified a value for tar_host, this one spec would
fail because it assumed that value was nil.

This change just stashes the value of tar_host, and sets it
to nil to match the spec test assumption, and then restores
the original value when it's done.
Merge pull request #284 from kylog/maint/spec-fix-up

(maint) Fix specs to run even after a package bootstrap
(RE-1535) Restore previous template behavior

Previously, debian templates would be automatically evaluated and
included in tarballs. This functionality was lost at some point. This
commit works around the issue by sourcing the template from the root if
it doesn't exist in the workdir. If it is not available in either
location it exits with a helpful message.
(maint) Add http:// to the link given to users to make it clickable
Merge pull request #286 from haus/maint/master/add_http_to_link

(maint) Add http:// to the link given to users to make it clickable
Merge pull request #285 from haus/ticket/master/re_1535

(RE-1535) Restore previous template behavior
(maint) Add utilities to Pkg::Util::Version

Add a `branch` method, which returns the name of the current branch
or its status as being detached from HEAD.
(maint) Add Pkg::Util::Prompts module for specific prompts

This is the foundation of work to move user prompts out of 00_utils.rb
and into their own module. There's other prompts that we should
use when we ship packages, and they'll also live here.
(maint) Add new confirmation prompts to uber_ship

Consider also moving these into any other `ship` tasks.
(maint) rename prompts.rb to prompt.rb

To bring this inline with some other utilties, I'm changing this from plural to
singular form. Every method in this submodule will be a different user prompt
on STDIN.
(maint) Move 'ask_yes_or_no' into Pkg::Util::Prompt

Pkg::Util::Prompt.ask_yes_or_no now has some formatting
wrapped into it, and it strips (not just chomps) responses.
It also shows the user their invalid input if they answer
anything other than yes or no to the question.
(maint) More refactoring to keep us from shipping on anything but a tag

I've cleaned up numerous helper methods under lib/packaging/util and
revised the logical flow between notifications, prompts, and validations.

- Validations should only confirm a condition, or otherwise fail.

- Notifications should only relay information across stdout or stderr
(they should not change the execution flow of the program).

- Prompts should relay some basic amount of information and ask a user
to take action based on the information relayed.

These are the general workflow for many of the rake tasks we run (take a repo,
confirm user intent to do something with it, do the thing that we said we would)
so I've tried to construct basic methods that can be recycled as we tease apart
the numerous rake tasks.
(maint) Use a more descriptive name than Pkg::Util::Version.git_tagged?

I think that 'Pkg::Util::Version.git_repo_has_tags?' is a little
more descriptive and indicative of intent than 'git_tagged?'