Introduce monitor_by_number()

Rather than internal APIs relying on the name of monitors when looking up
various things about them, instead assign each monitor an ID which can be used
internally.

This will also make things easier in the longer-term when trying to streamline
how RandR is going to be used, but for now this will make more sense in terms of
communicating monitor information with modules.
TODO:  Add item about monitor API