Added micro benchmarks for digit related functions

- Benchmarked some possible implementations of `is_hex_digit`
and `is_digit`.
- Came to conclusion that `is_digit` and `is_digit_cmp` behave nearly
the same, while `is_hex_digit_cmp` out performs `is_hex_digit` by
a factor or 2-3.
Shuffled functions around

- Moved `is_hex_digit` `is_digit` into a `util` mod.
- Moved error marking into `common`.
Rename function `read_norm_char` into `read_nchar`

- Renamed for brevity
Add `peek` fn to XmlReader

- This method cheeks if there already has a peeking char in
buffer, peeking only when the buffer is empty.
- TODO: make sure this method doesn't modify position.
Add Filter trait

- Filter trait is used to filter elements according to some rule.
E.g. for example if we want to read all whitespace characters,
or we want to read until encountering a `<`, and similar.