Refactor `user.git` module to use value getters instead of function and implement cache. Also refactoring how shell module is publicly exposed.