Added a way to add more custom elements to help message
Added validation callbacks to arguments
Added optional constraints on some argument types