Valerie: added new interfaces; Knockout: fixed .register overloads

Valerie: added new interfaces; Knockout: fixed .register overloads, see #2732 
Not sure I know how to do that: viewModel can be a string, a function, or an object with properties - I didn't know how to represent those overloads in a single interface