Fixes Github Issue #140

This issue happens when a software is both a transitive
dependency at the software level, and a top level project
dependency. We were blindly shifting all the project deps
to the end of the build order as an optimization, and failed
to check for the case where we actually *needed* that software
in the right place.

This patch ensures that, if the software is a dependency of
any other software description, it does not get shifted to the
end.
Merge pull request #144 from opscode/GH-140

Fixes Github Issue #140
adding tests for overridding the source for software
use the source method when creating the uri and checksum
This way the overrides are applied instead of just using the default values in `@source`
Fix cache operations by checking if bucket exists

Bucket creation via uber-s3 may be broken. Running the previous
existence check via attempt to create bucket code gives the following
error:

    Digest::Digest is deprecated; use Digest
    UberS3::Error::SignatureDoesNotMatch: SignatureDoesNotMatch: The
    request signature we calculated does not match the signature you
    provided. Check your key and signing method.

With this patch, we safely determine if the bucket exists and only
attempt creation if the bucket is missing. Further investigation is
needed since bucket creation as coded here fails in the same way.
Fix Rubocop errors
add --tags flag to git describe

use lightweight tags in addition to annotated tags.
fix spec
Create msi packager for windows.
Fix rubocop issues.
Update the project creator to be able to create a project that can build an MSI.
Functional test for msi packager.
Document Library methods relevant to order
lolrubocop
Add missing requires so software.rb loads correctly

Also extract ohai to its own file so it can be depended on individually
Add helpers to prepend paths platform-independently
No bikeshedding on string literals
Fix newlines in specs
Fix Travis notifications
Share the code to set the MSI version across projects.