Register user
        Accepts user data, validates it and performs registration. Will send
        a welcome message with a confirmation link on success.

        :param user_data: dic, populate user with data
        :param send_welcome: bool, whether to send welcome or skip it (testing)
        :param base_confirm_url: str, base confirmation link url
        :return: boiler.user.models.User

def register(self, user_data, base_confirm_url='', send_welcome=True):
        """
        Register user
        Accepts user data, validates it and performs registration. Will send
        a welcome message with a confirmation link on success.

        :param user_data: dic, populate user with data
        :param send_welcome: bool, whether to send welcome or skip it (testing)
        :param base_confirm_url: str, base confirmation link url
        :return: boiler.user.models.User
        """
        user = self.__model__(**user_data)
        schema = RegisterSchema()
        valid = schema.process(user)
        if not valid:
            return valid

        db.session.add(user)
        db.session.commit()
        if not user.id:
            return False

        # send welcome message
        if send_welcome:
            self.send_welcome_message(user, base_confirm_url)

        events.register_event.send(user)
        return user