fix(cgpt): Add GUID for resizeable STATE and alias for /usr

Add a new type to identify resizeable partitions to be more conservative
about what we modify on boot. Avoids surprising people who manually
modified the partition table.

In the future the CoreOS rootfs will instead be /usr. Add an alias so
scripts can use a more sensible looking partition type for /usr.
To avoid needless churn in update_engine the GUID remains the same.
fix(cgpt): Fix GUID for 'data' type and add generic Linux GUIDs

For whatever historical reason (perhaps ChromeOS started before the
parted and gptfdisk devs got around to agreeing on a GUID for Linux
data? I dunno.) the 'data' re-used the general data GUID used by
Windows. This is a bit silly, so switch to the correct GUID every other
Linux distro uses these days.

While I'm at it add other general purpose Linux GUIDs.

Clean up the list of partition types printed by cgpt add -h
fix(cgpt): Drop O_NOFOLLOW flag from open()

It is unclear why O_NOFOLLOW was added other than a very vague note in
commit c4e92af8. The bug it references is unavailable. The flag breaks
referring to devices via any of the oodles of symlinks in /dev.
fix(cgpt): Add support for repairing resized disks.

As-is `cgpt repair` when confronted with a disk with a new size will
write the existing table with the old sizes, leaving the disk every bit
as broken as it was before. Now in addition to replacing the secondary
header it will properly recompute the properties that depend on disk
size and update both headers.
feat(cgpt): Add resize command.

This implements CoreOS's automatic filesystem resizing as part of cgpt,
replacing the current shell script. Admittedly this code is more
complicated than the old shell script but it should be more robust and
suitable for use in the bootengine initramfs. Improvements include:

  - Update partition table entry in place instead of the delete/add
    required by gptfdisk. This hopefully reduces the risk of bugs
    making larger changes to the partition table than expected such as
    when gptfdisk used a different alignment for the new partition than
    the old one did.

  - Likewise use the partition resize ioctl so the kernel also treats
    the change as an in-place update. Hopefully this will be the end of
    the magic vanishing partition trick we have been seeing in EC2.

  - Detect partition by searching for the new `coreos-resize` type
    instead of the label `STATE` by default. This should be more robust
    in the long term, preventing us from resizing user created
    partitions for use with PXE booting or similar.

  - On the flip size resizing by label is also supported, as is any
    other identifier supported by `blkid`. For example to maintain
    current behavior: `cgpt resize LABEL=STATE`

  - Whatever identifier is used it is strictly required to be unique.
    The resize is aborted if multiple devices are matched.

  - Do not make any changes to disk if anything unexpected is found, up
    to and including the resize partition ioctl failing. This particular
    behavior may need to be revisited if it turns out something needs
    the on-disk partition table to be written before the kernel changes.

  - No dependencies on tools other than e2fsck and e2resize which makes
    this tool easier to use before any real filesystems are mounted.
fix(travis): Install blkid dev headers.
fix(travis): Fix build with old linux headers.
Merge pull request #9 from marineam/resize

resize support in cgpt