There is a great app called Hyperdock that does exactly what you want with window snapping. It works so perfectly that I sometimes forget that it's not a native feature of OS X.
Not sure about your window size problems with external monitors, I find that OS X handles this amazingly well