lib,test: add `BASIC_STRING.take_while{,_with_index}`

This contributes to issue #3.
Filter functionality and tests.
Slice functionality and tests.
Merge PR #16

This also brings PR #14 into `dev` (it is also on `master`).
Implementing mapi and iteri.
Merge PR #18 into `dev`
Implementation of {is,chop}_{prefix,suffix}.
Merge PR #20 into `dev`

Conflicts fixed:
	test/sosa_test.ml
doc: fix documentation generation

There was a syntax error in the `slice` doc-comment.
Implementing splitAt, take and drop with unit tests.
Merge PR #21 into `dev`

Some conflicts had to be solved:

- `sosa.ml`
- `test/sosa_test.ml`
First pass at map2_exn