FakePipe: Numerous bugfixes; it actually works now. Fixes include: - Callback handling rationalised, fixed and optimised. - Eliminate double inheritance which caused subtle conflicts. - Changes the API to use ->other instead of ->get_other(). - Use single references to mux and cond variables.