All provider to work beyond MacOS.

* Add parent provider and migrate shared methods
* Add detection for MacOS specific path.
* Maintain boxen as default user, but support other target user.