title: How does the Swift String replaceRange method deal with empty ranges
body: <p>Is it expected that when calling <code>replaceRange</code> on a Swift string with a range that has the same start and end index that the <code>replaceRange</code> method will insert a new character and make the string longer?</p>
  
  <p>For example with this method:</p>
  
  <pre class="lang-swift prettyprint-override"><code>func replaceCharAtPositionForWord(word:String, position: Int, char: Character) -&gt; String {
      var newWord : String = word;
      var range : Range = Range&lt;String.Index&gt;(start: advance(newWord.startIndex, position),
                                             end:advance(newWord.startIndex, position+1))
  
      newWord.replaceRange(range, with: String(char))
      return newWord;
  }
  </code></pre>
  
  <p>Calling <code>replaceCharAtPositionForWord("Hello", 3, Character("a"))</code> returns "Helao" as expected.</p>
  
  <p>But if instead the <code>Range</code> above is setup as:</p>
  
  <pre class="lang-swift prettyprint-override"><code>var range : Range = Range&lt;String.Index&gt;(start: advance(newWord.startIndex, position),
                                         end:advance(newWord.startIndex, position))
  </code></pre>
  
  <p>Then the code inserts a new character and expands the string result to be "Helalo"</p>
  
  <p>Is this what is expected from a <code>Range</code> that has no length?</p>