Usually spelled "yankee", and sometimes shortened to "yank".

I don't find it offensive.
It has been used offensively by the confedertes during the war, and by other countries when referring to americans.
Outside of the civil war it's sometimes used as a name for Americans.

Some more info here:

http://en.wikipedia.org/wiki/Yankee