Add witness, a simple online locking validator.

This resolves #358.
33 files changed