NAL, but here is my interpretation
1) The work you did prior to being employed by them belongs to you. Unless you agreed to assign those copyrights beforehand they have no rights to that code. In practice proving what was yours before hand might be difficult.
2) The work you did for them is a derivative work. While they have rights to the new code (depends on the specific laws but generally that is the case), they have no right to your original code so it might well be useless without the original code.
3) The GPL clause only kicks in on distribution - non distributed changes are not required to be GPLed
4) If they use the GPL librarys and distribute the code, then they would be obligated to distribute the code changes
This isn't stealing. Almost all programming jobs will contain a clause saying your employer owns any code you write while you are at work there. It sucks sometimes but it is sort of fair depending on how you look at it. The whole notion of working for an employer revolves around you giving up something in exchange for money. In this case it is your freedom and your intellect/creativity/etc.
The issue here is that if your employer does not wish to make your changes public (and comply with the GPL) then these changes need to be removed from the public work...so that the public work can still meet the terms of the GPL.
They can indeed continue to use it in-house provided it is not "distributed" from one party to another.
As correctly pointed out in other posts in this thread, the GPL only comes into play when the work is copied/distributed. You can do whatever you like with GPL code in-house. It is only when you later distribute that work to another party, that you become bound by the terms of the GPL.
Also consider this: Releasing code publicly that your employer owns the copyright to, is actually stealing from your employer.
"Now this is a totally brain damaged algorithm. Gag me with a smurfette." -- P. Buhr, Computer Science 354