Go Package Management 2.0 rewrite

* [x] squash merge for clean history