Update return type infer logic to merge all possible nested values
This version updates the TypeScript logic to merge all possible property values when inconsistent objects are provided to merge, to address #21.
The previous logic used a much simpler method which resulted in less accurate results when used outside of the designed context of providing objects that were all consistent with each other.