unify BackendContainer and Container

A backend must now implement its own filtering by properties. This keeps
Container from having to retain its own properties, and theoretically is more
efficient if the set of properties grows and the containers are stored in
a database. Previously it would be a full lookup of all containers + their
properties, and manual filtering done by the server.

A Backend must now implement GraceTime(Container) time.Duration, which is used
by the server to determine a container's grace time. This isn't very elegant
but pushes all of the backend-only logic onto Backend.