Merge pull request #93 from ericyanush/master

Fix compilation of Cosa outside of Arduino IDE
Cleanup formatting.
Fixing compiler without Arduino IDE.
Improving portability and additional template function (constrain).
Fixed formatting.
Adding comment on pullup resistors for USI/TWI (ATtiny).
Remove compiler warnings. Update and correct documentation.
Cleaning up boards definitions. Adding data max size attribute for 1.5.5.
Fixing documentation error.
Removing unnecessary include.
__ARDUINO_MEGA__ PinChangeInterrupt broken

The offset into the 'pin' instance array, ix, incorrectly mapped PCINT0 pins [16..23] onto pin[-8..-1].  Correct mapping is [16..23] onto [0..7].
Merge pull request #94 from SlashDevin/patch-1

__ARDUINO_MEGA__ PinChangeInterrupt broken
Instance array too big

pin[] only needs to be 8*PCINT_MAX.  For __ARDUINO_MEGA__, this will
allocate 24 elements instead of 71.
Rename 'pin' instance array

Because the word 'pin' is so common, a more specific name is used to
help the reader identify its purpose: finding the correct instance to
use from the ISRs.
Consistent use of #if defined

Switched to the positive test like all the others.
Refactor on_interrupt

By adding an extra argument, all separate implementations could be
refactored into one routine.  No new calling overhead is introduced,
except for TINYX4 (which has only one PCIMSK) and TINYX61 (which has two
PCIMSKs but only one ISR vector).

This also uncovered copy and paste errors in the TINYX61 version:
(1) state[1] was never updated, always used state[0]
(2) PCInt8..15 on_interrupt handlers were never called, always called
PCInt0..7 handlers.
Fixed SPI chip select/interrupt pin assert order.
Adding support for W5100 Ethernet Controller device driver and Socket Interface.
Merge pull request #95 from SlashDevin/PinChangeInterrupt-refactor

PinChangeInterrupt refactor
Cleanup and code reduction.