Major code refactoring, especially dialogs;
Add output file support for GEOJson, Spatialite, GPKG, and KML in addtion to
ESRI Shapefile;
Add Reverse Geocode tool (Sampaio); Street layer geocoder follows curved streets
(Schweitzer);
Add USCB and ESRI Server to web geocoder tool (Winters);
Add Change Projection tool; Add Animate Zoom tool;
Hub Distance and Hub Lines combined into a single tool with differing allocation
criteria;
Combine search and select tools, use QgsExpression, and remove Google since it
needs an API key;
Dialogs use vertical and grid layouts to make them expandable and to improve
aesthetics (Wischounig);
Moved interaction with QGIS interface from mmqgis_library into mmqgis_dialogs so
library functions can be used in stand-alone scripts and (later) incorporated
into the processing framework;
README documentation of the mmqgis_library.py API with examples on how to use
those functions from the QGIS Python console or in stand-alone scripts;
mmqgis_dialog base class to simplify and generalize native dialog creation;
Added progress bars to dialogs;
Modify dialog control flow from OK/Cancel to Apply/Close;
Add persistent dialog content;
Replace deprecated pendingAllAttributesList() with attributeIndexes() in export
attributes;
Replace direct CSV reading and writing with OGR/RGDAL QgsVectorLayer() and
QgsVectorFileWriter()