Add ASSERT() macro.
Use pointers to prevent IO definition problems.

Now avr/io.h can be included from everywhere. This increases code and
data size though.
Remove sleep mode.

Endpoints aren't interrupted so better try to poll them as fast as
possible.
Remove blocking write in keyboard endpoint.

Function is only executed if write is possible.
Add special ERROR routine for Teensy.
Process all usb endpoints in mainloop.

Previously the control endpoint was interrupt based.