Const. (Observer), IntVar, Event

Change the design: add IntVar with CudaVariable that inherits from it.
Moved Domain pointer into IntVar Class and perform actions from there.
Removed expensive static_pointer_cast from Variable and add some
methods.
Add int_ne constraint.
Add Event as object to pass to the observers.