Add HtmlFormBuilder

Relates to #537 

`HtmlFormBuilder` to easily create a form using a fluid interface and avoid
things like `'<form name="searchbyproperty" action="' . '" method="get">' . "\n" . ...` within a script to avoid manual templates.

```php
$html = $htmlFormBuilder
	->setName( 'searchbyproperty' )
	->withFieldset()
	->setParagraph( $resultMessage )
	->setPaging(
		$this->queryOptions->limit,
		$this->queryOptions->offset,
		$resultCount )
	->setHorizontalRule()
	->setInputField(
		$this->messageBuilder->getMessage( 'smw_sbv_property' )->text(),
		'property',
		$this->queryOptions->propertyString,
		'smw-property-input' )
	->setNonBreakingSpace()
	->setInputField(
		$this->messageBuilder->getMessage( 'smw_sbv_value' )->text(),
		'value',
		$this->queryOptions->valueString,
		'smw-value-input' )
	->setNonBreakingSpace()
	->setSubmitButton( $this->messageBuilder->getMessage( 'smw_sbv_submit' )->text() )
	->getForm();
```
```php
$html = $this->htmlFormBuilder
	->setName( 'buildtables' )
	->setMethod( 'post' )
	->setParagraph( $this->messageBuilder->getMessage( 'smw_smwadmin_docu' )->text() )
	->setHiddenField( 'action', 'updatetables' )
	->setHeader( 'h2', $this->messageBuilder->getMessage( 'smw_smwadmin_db' )->text() )
	->setParagraph( $this->messageBuilder->getMessage( 'smw_smwadmin_dbdocu' )->text() )
	->setParagraph( $this->messageBuilder->getMessage( 'smw_smwadmin_permissionswarn' )->text() )
	->setHiddenField( 'udsure', 'yes' )
	->setSubmitButton( $this->messageBuilder->getMessage( 'smw_smwadmin_dbbutton' )->text() )
	->getForm();
```

The final form (as `string` representation) is generated when `getForm` is called and by doing so all existing parameters and variables are reset to a default value.
This is very much in the direction of the `MessageBuilder` interface I created some time ago.

https://github.com/JeroenDeDauw/i18n

That interface is just intended for the function is currently performs though. Additional stuff would need another interface. Perhaps building on that makes more sense? The interface is MW agnostic, is better segregated and it's in a dedicated package. Feel free to fork that stuff as you see fit.