Software-Defined Underwater Acoustic Modems: Historical Review and the NILUS Approach