Filtered layers in download cart

There is a fair bit to this merge, unfortunately.

It breaks down into these main pieces of work:

**UrlUtils**
Added a new class in Groovy called UrlUtils. This is to remove duplicated code for building URL Strings. There are Grails unit tests for this. We also changed places that used the original, duplicated code.
(This work was done on a branch and merged to this branch, so it has been reviewed once already).

**FilterPanel**
We removed the code here for adding filtered data to the download cart. Also removed the Jasmine tests.

**GeoNetworkRecord**
We added code here for linking a WMS Layer to the GeoNetworkRecord. There is also code to serialise the information we need for download (as opposed to ALL the Layer information) when the download cart is downloaded. Includes Jasmine tests.

**DownloadPanelTemplate**
I updated the template to show the filter applied to the Layer in the download cart. Jasmine tests were updated.

**Server-side of Download cart**
I moved a bunch of code form client-side  to server-side. There was a bit of specific code going into BulkDownloadService so I created a new Interface called 'Downloader' and 2 implementations of that. One handles normal linked files, the other handles WFS downloads. This way we can move code specific to certain types of download out of the BulkDownloadService. There are also Grails unit tests for these changes.