Trying a different implementation.
Added the use() function which sets the version an application will use.
The require() function is now used to set version requirements.
overlay() function overlays a new repo on the existing repo