Controlling Self-Assembly Of Macroionic Solutions Via Non-Covalent Interactions: From Supramolecular Structures To Self-Recognition