Updated 3 for SDL support

Moved sub packages to `PackageInfo` and added `subPackagesImported` array in `PackageInfo` to store whether a sub package was "imported" or "inline".  This is used in the `toJson` function to know whether or not a subPackage was imported.
Inside `PackageInfo`, sub packages should be represented as `PackageInfo[]`. There shouldn't be a cyclic dependency between the two.