Basic version of libcontainer API.

This version has mostly the behavior available today and the
functionality agreed upon in other PRs. Further changes will be sent as
smaller PRs for discussion.

This PR is meant to be the already agreed-upon components of the API (note that a lot of functionality is missing). The reviewing is getting harder so we'll try to get this in, and then make the smaller changes with more discussion in smaller PRs.

Docker-DCO-1.1-Signed-off-by: Victor Marmol <vmarmol@google.com> (github: vmarmol)
If we treat the name simply as a string which is associated with the Container for display purposes (logging etc.), we don't actually have to require it to be unique. Requiring it to be unique puts a burden on the user.

Having a "name already exists" error *forces* the libcontainer implementation to maintain a collection of Containers, which it would not otherwise need to do.

Checking for uniqueness means that the Factory instance is stateful (or is based on another stateful value). We then have to be careful about what happens if you somehow get two Factory instances.

Checking for uniqueness _in this machine_ carries additional complexity. E.g. if we end up with multiple versions (or multiple instances of the same version) of libcontainer running on the same machine, they will need to co-operate.

On balance,  I think we should delete the "name already exists" error and soften the description of name to say "..., should be unique in this machine although uniqueness is not mandatory".

(If we really need a machine-unique name, e.g. to return from Detect(), it would be better for libcontainer to generate such a name. It could do that, for example, by creating a suitably named cgroup hierarchy.)