postcondition tests have their own scripts

* instead of hijacking <test>/cmd, these assertions occupy
  (optional) <test>/post
* dirstate.{expected,actual,diff} -> post.*
shared impl. for common code in postconditions

instead of repeating function definitions across post files,
there's now tests/post.functions
300-missing-expected actually tests the diffs

in fact, it tests the whole dirstate.
350-missing-actual actually tests the diffs

in fact, it tests the whole dirstate.
assert_file, assert_missing -> assert_fs

it's called assert_fs but in fact just wraps test(1).

from tests/400-post/README:

assert_fs [T] P

* T is an optional operator for test(1), defaults to "-e".
  if the first character is "!" instead of "-", the test
  is negated.
* P is a filesystem path.
README.rest expanded somewhat