Generalize model class

Due to controller having an abstract class acting as an interface I felt
the need for having the same for the model. For that, I have generalized
the state, being typed as a generic enumeration, into the abstract class
Model and renamed the previously named Model to ClientModel.

Now, the Model extends Observable and defines the get and set method for
the state. This worked out very well so far. However, everytime a switch
statement is called on the state it has to be casted to the concrete
enumeration type beforehand.

In addition, I have simplified the model states, where I have merged
waiting for detection start and waiting for detection stop to just a
state named wait.

Signed-off-by: Konrad Reiche <konrad.reiche@gmail.com>