Add Graph Node cache

With the Node cache, which uses URL as key, we can reuse the same
Node instance between Main Resource, Link Resource and List Resource.

This allow us to minimize the number of OPTIONS call we do, and
since all Nodes refer to the same data set that belongs to the
Resource, a simple 'refresh' on any level will refresh all users
of the said data.

e.g.
* Session contain a List of User
* Add User to List

A refresh call on the User List, will refresh the List in Session as
well without a need to refresh the whole session since they refer to
the same Node.

Issue: #30