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.
+1 on doing it this way so that we don't have duplicate structs.  Also if you do this you can just do a cast instead of the functions to convert to the internal types.  `m := (*mount.Mount)(someLibcontainerMount)`