Move some constants into -define's

While constant functions are also nice, I do think that constants as defines are more idiomatic Erlang code.
Clean up state loading, srv_name/0.

The state can use maps. Also, do not use srv_name/0, use ?MODULE instead.
Improve type specifications.

* Use the inet types for IP addresses and port numbers.
* A node_id() is now a <<_:160>> and this is supposed to work all over the code base.
Simplify the dht_sup

* No need to have a tracker table here anymore. The tracker code is going to be changed anyway.
* Push application retrieval into the `init/1` function. This avoids passing parameters, and puts code where it belongs.
Add a dummy tracker file for now.
Flesh out types for most calls.

The patch makes the dialyzer very angry, but this is good since we can then begin cleaning up the code base for warnings and other things pertaining to the types of the code base.