Switch to SHA256 for authentication
NOTE: This builds on top of !2428, merge that patch first!
This patch replaces the insecure MD5 hash algorithm with SHA256 for cryptographical uses, which provides the necessary strength for a fully secure authentication system. This will fully protect the authentication process from eavesdroppers, as even if someone wiretaps the connection, they still won't be able to authenticate as the challenge auth protects against replay attacks, and since SHA256 has no known hash collisions, cracking the hash is not viable unlike MD5.
Non-cryptographic uses, however, will keep using MD5 as it's smaller and faster to calculate. For this reason, MD5 will not be removed, but the NOMD5
compilation flag has been removed and no equivalent flag has been added for SHA256, since excluding them will only lead to issues more than anything else.