Better hexdump; doesn't choke on sub-16 byte strings

Enhance `hexdump` so that the code can handle byte counts less than 16.

You can see the issue with the following script:

```python
import pwn
print pwn.hexdump('a')
```

Also make the width an option, and allow the skipping feature to be disabled.
```python
import pwn
print pwn.hexdump('a*15', width=4)
```

Prints:
```
00000000  61 61   61 61  |aaaa|
*
0000000c  61 61   61     |aaa|
0000000f
```