whole_func_string: function regNewModel (name, schema, opts) {
    var model = MRModel.apply(moonridgeSingleton, arguments)
    models[name] = model
    return model
  }
func_code_string: function regNewModel (name, schema, opts) {
    var model = MRModel.apply(moonridgeSingleton, arguments)
    models[name] = model
    return model
  }
func_documentation_string: @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}