Fix deserialization errors on router operations

Hi,

I found that now we get deserialization errors on operations of routers
because of several problems.

First of all, 'routers' is 'routes' which is a list of static routes.
Also, a static route is a JSON object with two keys 'destination' and
'nexthop'. Thus, we need a class to map it.

The other is handling of 'external_gateway_info'. Now, it's defined as
a String, but actually it's JSON object which has structure to be mapped
to a class.

This patch resolves the issues above.
I tested againt grizzly and havana.

Please note that I made the additional classes as separated independent
.java files because they can be used from other classes such as 
RouterForCreate and Subnet etc. As for the issue on Subnet, I'm preparing
another patch.

Best regards,
Masanori