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. 
the return values of every function in libftdi (0.20) are different, easier to just say what value you're looking for like Rui/QLC did originally.