Fire an attach event if we're detached and receive data- apparently some OSes don't assert DTR when a program opens the port
Merge remote-tracking branch 'origin/fix/USBSerial-breaks-if-host-doesnt-assert-DTR' into edge
Add freespace GDB command to .gdbinit

This just reports how much space there is currently unused between the
top of the heap and the top of the stack.
Fixes issue #129 - Don't leak gcodes in block.

Previously Conveyor::new_block() was never executing the last chance
code it contained to clean up the next block that it was going to
overwrite and use in the ring buffer.  This was failing to run becaues
this->queue.get_ref(this->queue.size()) would always return a NULL
pointer as that method doesn't allow indexing to or past the tail.

I added a get_tail_ref() method to RingBuffer which returns the
required pointer.

NOTE: There is still a bug in the flush_blocks / Conveyor::on_idle()
      code path as it should have cleaned up this block already but it
      failed to do so.