issue #46: support for areas

It is working good for me. Also some little code refactoring :)

Usage example:

```c#

using System.Web.Mvc;
using NavigationRoutes;

namespace MyProject.Areas.Admin
{
    using Controllers;
    using System.Web.Routing;

    public class AdminAreaRegistration : AreaRegistration
    {
        public override string AreaName
        {
            get
            {
                return "Admin";
            }
        }

        public override void RegisterArea(AreaRegistrationContext context)
        {

            context.Routes.MapNavigationRoute("Admin_root", "TestLayout1", this.AreaName, new { controller = "ExampleLayouts", action = "Starter" }, context: context);
            context.Routes.MapNavigationRoute("Admin_foo", "TestLayout2", "{area}/fuuu", new { area = this.AreaName, controller = "ExampleLayouts", action = "Marketing" }, context: context);
            context.Routes.MapNavigationRoute<ExampleLayoutsController>("TestLayout3 with inners", c => c.Narrow(), context, urlPrefix: this.AreaName)
                .AddChildRoute<ExampleLayoutsController>("Marketing", c => c.Marketing(), context, urlPrefix: this.AreaName)
                .AddChildRoute<ExampleLayoutsController>("Fluid", c => c.Fluid(), context, urlPrefix: this.AreaName)
                .AddChildRoute<ExampleLayoutsController>("Sign In", c => c.SignIn(), context, urlPrefix: this.AreaName);
        }
    }
}


```