Add type specifications for dialyzer

I added typespecs to supress unnessasary dialyzer warnings (no returns).
 - Typespecs are added
 - error() is replaced by erlang:nif_error(),

In addition, I wraped some arguments with list to ensure types. For example, salt_nif:salt_sign() function parses first arguments as a iolist (via enif_inspect_iolist_as_binary() c api). Erlang iolist() does not include raw buffers, so I wrapped it with list.