"kpm pack" identifies source files outside of project root and packs them

parent #570 

The original implementation only packs source files inside project root dir. In this PR, if a source file is out of project root dir but in the solution dir, we pack it as well.
Do we use IReport here?