GUID.js: set a GUID cookie for unique users throughout a web application session

This plugin is intended to be used in the context of a web application where you want
to trace the path of a user through the page and how bandwidth and performance of the
application inhibits the user from his usual workload in an application.

The technique used in this case is checking wether or not a UUID has been set for the
sesssion as a cookie. It is intended to be used as searchable entity in the later
beacon analysis phase.

Configuration for this plugin may look like this:

```javascript
BOOMR.init({
	GUID: {
	      cookieName: "myCookieName"
	}
});
```

You may use the cookie name as the unique key to search for in your beacon data.
I ran a test using [benchmark.js](http://benchmarkjs.com/)

```javascript
var Benchmark = require('benchmark');

/* Algorithms for UUID Generation */

// BluesMoon referenced Code from: https://gist.github.com/jed/982883
function bluesmoon (a) {
        return a?(a^Math.random()*16>>a/4).toString(16):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,bluesmoon);
};

// Andreas-Marschke from Pull-Request for feature/forms
function am () {
        function s4() {
                return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
        };

        return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();
}

console.log("Example Outputs for tests: ");

console.log("* bluesmoon()");
console.log("");

console.log("undefined:", bluesmoon());
console.log("placeholder 'a': ", bluesmoon('a'));
console.log("placeholder [1e7]:", bluesmoon([1e7]));
console.log("placeholder 1:", bluesmoon(1));
console.log("");

console.log("* am()");
console.log("am():", am());
console.log("");

console.log("--------- Benchmark ----------");
console.log("");

var suite = new Benchmark.Suite;

suite.add("GUID - bluesmoon: undefined", function() {

        bluesmoon();

}).add("GUID - bluesmoon: placeholder 'a'",function() {

        bluesmoon('a');

}).add("GUID - bluesmoon: placeholder [1e7]", function() {

        bluesmoon([1e7]);

}).add("GUID - bluesmoon: placeholder 1", function() {

        bluesmoon(1);

}).add("GUID - am",function() {

        am();

}).on('cycle', function(event) {

        console.log(String(event.target));

}).on("complete",function(){

        console.log('Fastest is ' + this.filter('fastest').pluck('name'));

}).run();
```
And the results came back like this:

```text
Example Outputs for tests:
* bluesmoon()

undefined: 1dbd271f-f75d-4379-8772-342726179d6a
placeholder 'a':  6
placeholder [1e7]: 98968c
placeholder 1: 1

* am()
am(): fd124fe3-f931-4700-5db9-940f06afbdae

--------- Benchmark ----------

GUID - bluesmoon: undefined x 131,356 ops/sec ±0.76% (97 runs sampled)
GUID - bluesmoon: placeholder 'a' x 6,406,411 ops/sec ±0.86% (94 runs sampled)
GUID - bluesmoon: placeholder [1e7] x 737,677 ops/sec ±0.87% (93 runs sampled)
GUID - bluesmoon: placeholder 1 x 15,020,449 ops/sec ±2.83% (93 runs sampled)
GUID - am x 541,519 ops/sec ±0.89% (92 runs sampled)
Fastest is GUID - bluesmoon: placeholder 1
```

Looking at the results and what the Algorithms spit out in each case I'd prefer to stick with the code as is.

Any thoughts?