Converted BufferGuard back into non-template class
* reverses commit 6cb680d
* templated base type caused more problems than worth it
** const-correctness is guaranteed easier by passing around references and pointers to const instances of BufferGuard