Updated documentation to refer to extra module

The documentation was still refering to getopts as though it was in the
std module - I've changed this to refer to extra instead.
Fix all issues with sample code

The getopts sample program now compiles and runs. Additionally I made
all of the indentation uniformly four spaces.
std: replace str::each_split* with an iterator
std: replace str::all/any fns and methods with iterators
std: remove str::{len, slice, is_empty} in favour of methods.
std: fix compile & test
std: convert each_split_str to an iterator
std: convert character-based str::find_* to methods. Add .slice_{to,from} methods.
std: replace str::{any,all}_between with the iterator equivalent.
std: replace str::find_str* with a method
std: remove str::contains in favour of the method
std: convert str::reserve* to methods, and methodise str::push_*.
std: convert str::trim* to methods.
std: convert str::char_at* to methods.
std: fix tests
clean-up unused import warnings
std: remove str::{connect,concat}*.
std: basic documentation for the new str methods
std: remove str::to_chars
std: replace str::substr with the method.