Complete rewrite of External mode connectivity

As it turns out, some assumptions i made for PIL mode (for example,
target reads from receive buffer completely before sending to host) are
not applicable for External mode. Therefore, i had to implement a full
FIFO buffer with semaphores to make External mode work. This
implementation is not yet completely ready, but works.
Add demo model for External mode