Rename Regiser/Unregister and revise the function arguments

1. Register()   -> AddObserver()
2. Unregister() -> RemoveObserver()
3. Use two observer lists and observer pointers to handle always/non-always
   trigger case
Bug 987529 - Part 1: Integrate GeckoTouchDispatcher into vsyncdispatcher

For inputdispatcher, we should always trigger it, so we call
AddObserver() only once for each multitouch sequence.