WIP ENH: MLS functions

Not ready for merge, but @drammock you might want to have a look so you can see this set of changes. This PR will eventually probably also contain my fixes for Eyelink / calibration, because that code hasn't really been tested in a real-world scenario yet, so if you look now the review later will be easier.