Buffer::fill with strings

This patch fixes #659.

All the current tests still passes and I've added some new ones as well.