Ftdi scratch

This was originally meant a scratch to be redone, as far as I recall the code isn't too terrible, but if you think I need to clean up more and split FtdiInterface into seperate .h and .c files I'll be happy to sit down more on it.

I really wanted to do more work before I sent the pull req but I see I haven't had time to work on it for a while and it's a pity to let it sit.