new buffer features

- renamed buffer:str() to buffer:data()

- buffer:resize(n) is available

- buffer contents can now be inspected & modified:

  buf[i] returns the byte at offset i
  buf[i] = s sets the bytes starting at offset i to the bytes of the string s
  buf:data(index, length) works as a substring operator

- removed buffer_new_with_string and buffer_new_with_string_length

  (buffer_new_with_data is sufficient)

- improved the assert library