Data Structures for Strings in the Internal and Dynamic Settings