Added a JSONEncoder subclass that permits the Calendar tree to be encoded as JSON

here's a working example

```python

from json import JSONEncoder
import json
from datetime import datetime
from icalendar import Calendar, vDDDTypes, Event, ICalendarEncoder
import pprint

cal = Calendar.from_ical(open('test.ics','rb').read())

for event in cal.walk(name="VEVENT"):
    suspect = json.dumps(event, cls=ICalendarEncoder)
    working = json.loads(suspect)

pprint.pprint(working)
    
```