Rework QueryInterface implementations and docs

A whole lot of stuff. Missing docs. Some actual errors in docs. Simplified some methods. Catching MWException's in the MW implementation.
This needs to check for both `false` and `MWException` no matter what. An alternative implementation could be:
```php
try {
	$result = $this->getDB()->insert( $tableName, $values, __METHOD__ );

	if ( $result === false ) {
		throw new InsertFailedException( $tableName, $values );
	}
} catch ( MWException $ex ) {
	throw new InsertFailedException( $tableName, $values );
}
```
But I like the current one more because it does not repeat the exception.