Correct doc block return types.

Lets remove some "mixed" return types. Otherwise you could just as well omit it ;)
Also some more cleanup.

To stay BC I did not modify any code and rather fixed the doc block - even though in some places one should. It would be cleaner to always return string (empty string then instead of null).

E.g.
```php
/**
 * Returns the schema name. Override this in subclasses.
 *
 * @return string|null schema name
 */
	public function getSchemaName() {
		return null;
	}
```
should be
```php
/**
 * Returns the schema name. Override this in subclasses.
 *
 * @return string Schema name
 */
	public function getSchemaName() {
		return '';
	}
```

And stuff like
```php
/**
 * Get the last error as a string.
 *
 * @return string|null Last error
 */
	public function lastError() {
		if (!empty($this->lastError)) {
			return $this->lastError['num'] . ': ' . $this->lastError['str'];
		}
		return null;
	}
```
should be
```php
/**
 * Get the last error as a string.
 *
 * @return string Last error
 */
	public function lastError() {
		if (!empty($this->lastError)) {
			return $this->lastError['num'] . ': ' . $this->lastError['str'];
		}
		return '';
	}
```

Maybe for 2.6?

PS: Since quite a few of those "return null"s weren't documented, one could maybe even do this here as a bugfix instead of modifying the doc block?