Refactoring libcontainer to avoid cyclic dependencies in the future.

This change will make future work inside libcontainer easier since the API is separated from the internal implementation.
Also, if the issue is the private and public interface, a shared types package won't help with that...

In this specific case, I don't think the Mount struct will change significantly. The MountConfig is more of what will change.