Update to 0.3.0.
Update API level for TypeScript.
Update version in header.
Remove ES5 compat polyfill codes.

This causes to remove ~IE8 supports.
Use Object.keys() to enumerate keys of the subject internal map.
Merge pull request #40 from saneyuki/ie

Remove supports for ~IE8
Mention about support for legacy IEs.
Upgrade verstion to 0.4.
Update dependencies.
Merge pull request #41 from saneyuki/dep

Update dependencies.
Use 'Object.create(null)' to create a void object which is used as hashmap completely.
Merge pull request #43 from saneyuki/obj

Use 'Object.create(null)' to create a void object which is used as hashmap completely
Move to Mocha from QUnit.
Merge pull request #44 from saneyuki/test

Move to Mocha from QUnit.
Use power-assert instead of better-assert
Merge pull request #45 from saneyuki/power-assert

Use power-assert instead of better-assert
Update gulp.
Update gulp-rename
Merge pull request #46 from saneyuki/dependency

Update dependency packages
Move the part of copying the observer's list from "notify()".

This approch is a pseudo "copy-on-write"
which is based on the assumption that all object's lifetimes are
handled by garbage collection. This is tricky approach.

* When adding an observer to the same topic (calling "add()")
  we don't copy the current list and add the add the observer
  to the current list. Although this is destructive,
  its operation add the observer to the end of list.
  So it does not effect to the current iteralated range
  of the list's length. It's would be safety.

* When removing an observer from the same topic (calling "remove()"),
  we copy the current list, modify it, and overwrite this object
  with it. Because to remove an observer from the same topic is
  destructive operation that will decrease the list's length.
  It is not safety. See "remove()" method.

* When removing the topic and observers related to it from this subject
  (calling "_removeTopic()" via "removeTopic()" or "destory()"),
  it's not safety. However, we don't make it safe.
  Because, it's bad approach that the observer calls "removeTopic()"
  with the topic which is passed to his "handleMessange".
  It should be handled in each observers with using "remove()",
  or the subject handle "removeTopic/destroy".