Manifest formatting and build output
Manifest formatting and build output

This commit introduces some changes to the MANIFEST file formatting and
the build output, as well as generating blake2b checksums for all files
in the artifact.

First, the MANIFEST formatting is updated to be nicely formatted "GitHub
flavored Markdown"[0]. The MANIFEST is read into the web UI view of the
package, and rendered as Markdown, so it should be displayed so the user
viewing the package can easily determine what it is, and how it was
built. Some data may be blank, so we attempted to accommodate those
where most common, and display a more helpful message about why those
values were blank.

Second, we've removed the "Files" section from the MANIFEST. For some
packages, such as `glibc`, the file list is enormous and displaying that
on a web page is not necessarily friendly to the user, especially since
there may be other information below this that the user might want to
view. The files list is moved into a metadata file, FILES. The content
checksum of each file has been redone to use blake2b checksums instead
of SHA256 checksums. The output from the `hab artifact hash` command
only displays the checksum - not the filename - so we have to `echo`
this out using a function. This FILES metadata file is signed using `hab
artifact sign` so the user can know for certain that the content of the
files hasn't been tampered with. A side effect of this, however, is that
the build output says something like:

    * Signed artifact /hab/pkgs/core/pandas/0.0.5/20160609224124/FILES.

Even though `FILES` is not a "Habitat Artifact" (`.hart` packaged file).
We still consider this to be an artifact, and the output is shown so the
user can understand what is happening during the build process.

We've added new plan options that users can define:

- `pkg_description`: define a short description of the package
- `pkg_upstream_url`: define an upstream project homepage or web site
  URL

This is in line with other packaging systems for Linux distributions and
other operating systems, so consumers of packages know what they're for,
and where to check for new versions. Users can also write a multi-line
description with complete markdown support if they wish - an example is
provided in the comments of the build script.

The output of the actual build now includes the SHA256 and Blake2b
checksums of the Habitat artifact, `.hart`, file. These are written to
the `last_build.env` file as well, so they can be consumed by CI/CD
systems. This output will look something like this:

    mypackage: SHA256 Checksum: 59cc81e66255d2be53f054520cbf7767eb05d8856ddf69ec8e05159ee7cabf38
    mypackage: Blake2b Checksum: a8dadef1ea7ed37da251c641d33ceb947dc60f3d056e9ea3134ba22e9e5969dd

[0]: https://guides.github.com/features/mastering-markdown/

Signed-off-by: jtimberman <joshua@chef.io>

Pull request: #707
Approved by: fnichol

rsertelon/habitat,habitat-sh/habitat,habitat-sh/habitat,nathenharvey/habitat,georgemarshall/habitat,nathenharvey/habitat,georgemarshall/habitat,rsertelon/habitat,nathenharvey/habitat,nathenharvey/habitat,georgemarshall/habitat,rsertelon/habitat,habitat-sh/habitat,georgemarshall/habitat,georgemarshall/habitat,nathenharvey/habitat,georgemarshall/habitat,habitat-sh/habitat,rsertelon/habitat,nathenharvey/habitat,habitat-sh/habitat,rsertelon/habitat,rsertelon/habitat,habitat-sh/habitat,habitat-sh/habitat,georgemarshall/habitat,rsertelon/habitat,habitat-sh/habitat,georgemarshall/habitat