storage: introduce Constraints (WIP)

The existing Directive has been reimagined
as Constraints. Instead of embedding Name,
commands that take --storage will pass a
map[string][]storage.Constraint to the API.