Add fragmentation for Arduino, related changes

- Enable fragmentation by default
- Add EXTERNAL_DATA_TYPE  - for use with external programs that use very
large frames in their protocols - allows the external application to
access the frame_buffers directly via a pointer, and use its own data
caching mechanism
- Redefine NETWORK_MORE_FRAGMENTS_NACK
- Allow peek to return the frame size
- Temporarily add peekData(); function for testing
- Add fragmentation for Arduino
- Modify enqueing
- Change frame_size from static to variable
- Proper use of dynamic payload sizes
- Change queueing to fifo
- Use a pointer for the header when sending fragmented frames