first blind stab at more human-readable headers -- we want the files to clearly explain who they are and what tool to google for if you can't read them.
broaden headers out to key-value pairs.  driving for a futureproof behavior much like that of specs like protobuf (if we don't recognize a value, we'll damn well keep it on the assumption that some other version of us out there knew what it was doing).
implement some extra header ordering rules.  this is one of those points where I have a lot of friction with golang... ordered maps, motherfucker.  did you take datastructures 101.

also, i don't even what gofmt just did with that label.
start work on unmarshalling and make a test to show us when we're there.
header unmarshalling and tests.  though the tests don't account for the required headers yet.
error checking: return failure when required fields are missing in a header specification.
add the required headers to the fixtures in vault tests.  tests for basic vault.Content marshalling and unmarshalling now pass.
don't forget to pass through that error.
put more headers back into the placeholder encryption function so that the filter command don't error outright now that we have the required headers check implemented.  we need dramatically more context passed down from the top in order to do this wisely, though.

...some of which feel strange to pass down as global variables in a god object, yes.  but... alternatives?  this seems like the least bad direction to aim for.
put concepts like GryptName and GryptVersion the context object.  this will lead us towards being able to put those in headers and decision making at the edges where it's important.
you can now see the correct grypt version header and keyring name appearing in ciphertext headers.
Merge branch 'moar-headers' into moar-cli