Updated Spanish translation courtesy of Jorge Ramirez.
Resolving VUFIND-822 (SMS Content-Type Issue)
Thanks to Benjamin Mosior.
Suppress duplicate flash messages.
Resolving VUFIND-823 (Shibboleth login sequence broken).
Made directory structure consistent with namespaces.
Fixed relative paths to match up with move in previous commit.
Separated integration tests requiring CI from unit tests that stand alone.
Resolves VUFIND-663.
Removed unused method and test.
Define QueryBuilderInterface

* VuFindSearch/Backend/Solr/Backend.php (setQueryBuilder): Typehint on
  QueryBuilderInterface.
* VuFindSearch/Backend/Solr/QueryBuilder.php: Implements
  QueryBuilderInterface, remove old @todo markers.
* VuFindSearch/Backend/Solr/QueryBuilderInterface.php: Define
  interface for SOLR query builders.
BackendManager implements SharedListenerAggregateInterface

* VuFind/Search/BackendManager.php (attachShared, detachShared):
  New functions. Implement SharedListenerAggregateInterface.
  ($listeners): New property. Attached listeners.
  (__construct): Initialize listeners property.
Merge branch 'master' of ssh://git.code.sf.net/p/vufind/git
Resolving VUFIND-666 (don't require ZF2 bootstrap for testing).
Thanks to David Maus.
Reverted unintentional commit.
Updated Portuguese language file (thanks to Filipe Bento).
Use variable name string instead of query

You introduced a new variable $query which doesn't exist. Changed it to $string as in the rest of the code.
Here it happened: https://github.com/dmj/vf2/commit/d3e4c2e0fcb31cf1aae3ff75616d7898a47ea5d6
Merge branch 'patch-10' of https://github.com/Febe/vf2
Added test case to support previous commit.