function regNewModel (name, schema, opts) {
  var model = MRModel.apply(moonridgeSingleton, arguments)
  models[name] = model
  return model
}
function regNewModel (name, schema, opts) {
  var model = MRModel.apply(moonridgeSingleton, arguments)
  models[name] = model
  return model
}
function regNewModel ( name , schema , opts ) { var model = MRModel . apply ( moonridgeSingleton , arguments ) models [ name ] = model return model }
@param {String} name
@param {Object} schema
@param {Object} opts
@param {Function} [opts.checkPermission] function which should return true/false depending if the connected socket has/hasn't priviliges
@param {Object} [opts.permissions] with 4 properties: 'C', 'R','U', 'D' which each represents one type of operation,
values should be numbers indicating which level of privilige is needed

@returns {MRModel}
@param { String } name @param { Object } schema @param { Object } opts @param { Function } [ opts . checkPermission ] function which should return true / false depending if the connected socket has / hasn t priviliges @param { Object } [ opts . permissions ] with 4 properties : C R U D which each represents one type of operation values should be numbers indicating which level of privilige is needed