Re-wrote String extensions in native Swift (no Foundation)
Re-wrote String extensions in native Swift (no Foundation)

Re-wrote the three String extension computed properties in native Swift, i.e., using no Foundation methods. Functionality and performance should be ~same.

Only functionality/usage change: the prior(/current) `.humanReadableString` crashed for empty strings, due to no String length check prior to using `.substringToIndex(1)` (possible `.humanReadableString` is never used for empty used for empty strings in practice though). The native version in this commit above simply returns an empty String (self) for this case.

---

This commit use an immutable character sequence `c` in properties `uppercaseFirstLetterString` and `humanReadableString`; accessing first character with `.first` and remaining character sequence using `.dropFirst()`. For an alternative solution, see the commit previous to this one; letting `c` be a mutable collection and using `.removeFirst()` to access first character, whereafter remaining mutated `c` contains remaining character sequence.

---

Note: already (a bit too quickly...) deleted the branch of [my old (closed) PR](https://github.com/net-a-porter-mobile/XCTest-Gherkin/pull/15), hence a new PR rather than re-opening the old one.

net-a-porter-mobile/XCTest-Gherkin,net-a-porter-mobile/XCTest-Gherkin,net-a-porter-mobile/XCTest-Gherkin,net-a-porter-mobile/XCTest-Gherkin