¿Cómo funciona String.Index en Swift?

He estado actualizando algunos de mis códigos y respuestas anteriores con Swift 3, pero cuando llegué a Swift Strings and Indexing fue muy difícil entender las cosas.

Específicamente estaba intentando lo siguiente:

let str = "Hello, playground"
let prefixRange = str.startIndex..<str.startIndex.advancedBy(5) // error

donde la segunda línea me daba el siguiente error

'advancedBy' no está disponible: para avanzar un índice en n pasos, llame a 'index (_: offsetBy :)' en la instancia de CharacterView que produjo el índice.

veo queString tiene los siguientes métodos

str.index(after: String.Index)
str.index(before: String.Index)
str.index(String.Index, offsetBy: String.IndexDistance)
str.index(String.Index, offsetBy: String.IndexDistance, limitedBy: String.Index)

Al principio me confundían mucho, así que comencé a jugar con ellos hasta que los entendí. Añado una respuesta a continuación para mostrar cómo se usan.

Respuestas a la pregunta(3)

Su respuesta a la pregunta