New salt generation behavior

* Salts are now optional
* When a Salt is not specified, a random one will be generated
* Updated documentation to reflect changes