As other answers indicated you should rather overwrite the onUpate() method for a flawless user experience. Reinstalling and cleaning up is well... something like 1980 style to me and the way Android is designed I hardly doubt it's supported.
So to answer the original question no I don't think it is possible to manage applications via another applications. Though my lack of knowledge of any methods performing this task is not a proof I think it's more a question of the underlying structure.
Android is a a unix based system and every application is registered as a user in this system. The user rights are very well set in this environment meaning another user (application) can not easily access data of other applications and therefore injecting/hijacking/optimising the code.
An exception is e.g. external storage like SD cards. Here every application with the right permissions can troll around as they like.
However back on the actual system there are some ways to grant applications to access foreign packages. However from what I've read it seems more to be designed for sharing specific information and settings. I doubt an uninstall routine will be found there.
Just before finishing I thought about the idea that your new application could ask the older version to remove itself and not start up unless is has done. For this approach maybe you find more information here. Is it possible to programmatically uninstall a package in Android
Nevertheless I also recommend you the onUpdate() solution since it's the way the system was designed and therefore the experience for the user will be much more satisfying and less complex.