W5100fix: Workaround for compiler bug + small size optimization

Hi,

I had a little problems with Ethernet libs example programs. I managed to find out that those were actually caused by avr-gcc 4.5.1 compiler bug. I slightly "rephrased" the code in w5100.h to work around that problem. As a side effect, the 16-bit register reading function gets compiled to 10 bytes smaller code.

Forum thread with my analysis (incl. disassembly): http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1290209328

With this patch Ethernet's TCP and UDP examples are working nicely with Arduino UNO, Ehtershield SD and avr-gcc 4.5.1. IDE version 0021 running on 64bit Linux.

Yes, the workaround as such is quite pointless, but maybe you're interested in slight code size optimization.