"Class" is optional. if omitted, a Class object will be created and returned. "type" is optional. if omitted, constructor name is used as the usergrid type.
function define(Class, constructor, type) {
  if (!client) { throw new Error('Usergrid not configured'); }
  if (typeof Class === 'function') {
    type = constructor;
    constructor = Class;
    Class = {};
  }
  Class._usergrid = {
    constructor: constructor,
    type: (type) ? type : constructor.name.toLowerCase()
  };
  _.mixin(Class, usergridStatics(client));
  return Class;
}