UI: finish fixing broken tests
UI: some test cleanups / refactoring

Split server callback tests into their own modules
UI: split ship/interact.js & tests into seperate modules

No functional changes but code is more modular / isolated now