More uniform interface for calling train()
and removal of native hooks
Added train() without validation data
synced to remote version