Upcoming events we are speaking and attending

This introduces two new sections at the bottom of the Events & Talks page:
- Upcoming events we are speaking at
- Upcoming events we are attending

It queries the "unofficial" Lanyrd api to collect event data for each user in the [`authors.json`](https://github.com/guardian/developers-site/blob/6f1364716a829316ef6b63fc03ce24c80d380fd0/src/content/authors.json#L6) file, then flattens the data and dedupes events multiple people are talking or attending.

Unfortunately the api does not support CORS or JSONP, therefore I am constructing the data on build of the site in the gupl file and not dynamically on page load. The alternatively would have been to create a simple proxy, but this method was preferred. It was agreed that setting up a scheduled build for the project in TeamCity every morning would prevent the data from going stale.

I have ran the design changes past @paulrobertlloyd but the [copy](https://github.com/guardian/developers-site/blob/6f1364716a829316ef6b63fc03ce24c80d380fd0/src/events-%26-talks.ejs#L96) underneath each section needs some love.

### Screenshot
![google chrome](https://cloud.githubusercontent.com/assets/80089/3638480/8b602f2a-104c-11e4-9b48-30d47cae6b9b.png)

Really? I'd love to know why…

Oliver Joseph Ash
Software Engineer


On 21 July 2014 10:19, Patrick Hamann <notifications@github.com> wrote:

> In gulpfile.js:
>
> > +                events.map(function(event){
> > +                    event.users = [user];
> > +                    return event;
> > +                })
> > +            );
> > +        });
> > +        return deferred.promise;
> > +    });
> > +
> > +    return Q.all(events);
> > +}
> > +
> > +function sortEvents(events) {
> > +    var groups = groupBy(flatten(events), 'subsubtitle_class');
> > +
> > +    Object.keys(groups).forEach(function(type) {
>
> I did originally, but was the root cause of our issues on Friday.
> Therefore, opted for a manual loop like this.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/guardian/developers-site/pull/33/files#r15160158>.
>

-- 

------------------------------
Visit theguardian.com. On your mobile and tablet, download the Guardian 
iPhone and Android apps theguardian.com/guardianapp and our tablet editions 
theguardian.com/editions.  Save up to 57% by subscribing to the Guardian 
and Observer - choose the papers you want and get full digital access. 
 Visit subscribe.theguardian.com

This e-mail and all attachments are confidential and may also be 
privileged. If you are not the named recipient, please notify the sender 
and delete the e-mail and all attachments immediately. Do not disclose the 
contents to another person. You may not use the information for any 
purpose, or store, or copy, it in any way.  Guardian News & Media Limited 
is not liable for any computer viruses or other material transmitted with 
or as part of this e-mail. You should employ virus checking software.
 
Guardian News & Media Limited is a member of Guardian Media Group plc. Registered 
Office: PO Box 68164, Kings Place, 90 York Way, London, N1P 2AP.  Registered 
in England Number 908396