libcrypt: make crypt() itself more modular
libcrypt: make crypt() itself more modular

By using a function table, we can more cleanly support new crypt
implementations, such as SHA256 ($5$) and SHA512 ($6$).

Signed-off-by: William Pitcock <904d3da5c2001f94bfa014239941837342b65c9b@dereferenced.org>
Signed-off-by: Bernhard Reutner-Fischer <ce1ac9e9ad16abccd7821f371ad381197b4768ac@gmail.com>

skristiansson/uClibc-or1k,mephi42/uClibc,wbx-github/uclibc-ng,ddcc/klee-uclibc-0.9.33.2,ddcc/klee-uclibc-0.9.33.2,brgl/uclibc-ng,foss-xtensa/uClibc,hwoarang/uClibc,brgl/uclibc-ng,waweber/uclibc-clang,hwoarang/uClibc,foss-xtensa/uClibc,skristiansson/uClibc-or1k,majek/uclibc-vx32,atgreen/uClibc-moxie,foss-for-synopsys-dwc-arc-processors/uClibc,hjl-tools/uClibc,foss-for-synopsys-dwc-arc-processors/uClibc,ndmsystems/uClibc,ffainelli/uClibc,foss-for-synopsys-dwc-arc-processors/uClibc,majek/uclibc-vx32,ffainelli/uClibc,ndmsystems/uClibc,atgreen/uClibc-moxie,groundwater/uClibc,foss-xtensa/uClibc,waweber/uclibc-clang,ddcc/klee-uclibc-0.9.33.2,kraj/uclibc-ng,mephi42/uClibc,ndmsystems/uClibc,kraj/uClibc,kraj/uclibc-ng,hjl-tools/uClibc,ffainelli/uClibc,ffainelli/uClibc,wbx-github/uclibc-ng,groundwater/uClibc,groundwater/uClibc,foss-xtensa/uClibc,skristiansson/uClibc-or1k,kraj/uClibc,wbx-github/uclibc-ng,skristiansson/uClibc-or1k,atgreen/uClibc-moxie,majek/uclibc-vx32,hjl-tools/uClibc,kraj/uclibc-ng,ddcc/klee-uclibc-0.9.33.2,foss-for-synopsys-dwc-arc-processors/uClibc,groundwater/uClibc,czankel/xtensa-uclibc,hjl-tools/uClibc,hjl-tools/uClibc,mephi42/uClibc,hwoarang/uClibc,mephi42/uClibc,ffainelli/uClibc,atgreen/uClibc-moxie,czankel/xtensa-uclibc,groundwater/uClibc,waweber/uclibc-clang,kraj/uClibc,majek/uclibc-vx32,kraj/uClibc,ndmsystems/uClibc,waweber/uclibc-clang,brgl/uclibc-ng,czankel/xtensa-uclibc,kraj/uclibc-ng,wbx-github/uclibc-ng,czankel/xtensa-uclibc,brgl/uclibc-ng,hwoarang/uClibc