1. Let me explain what they are. A widget is just a special type of content item. Like any other content item, it is made up of various parts that define it. Widgets are then displayed in zones around the page, according to various rules (layers). So widgets
are for a specific purpose, whereas parts are general purpose components used to build up functionality in items
or widgets. How implementing routing in a widget would help in any way is beyond me!
Orchard's built-in routing is implemented as a part (RoutePart) that when attached to content items allows them to have a "friendly URL" route on which they can be viewed. This is just a "default" provision of routing. For a counter example, look at this
thread: http://orchard.codeplex.com/discussions/255829 - smeyers builds a RoutableByDatePart which can be used for yyyy/mm/dd style routes for calendars, blogs etc.
So what I'm getting at is, why don't you want a new table? There's nothing "special" about the Routable_RoutePartRecord table, it's just the backing store for a plain ol' content part.
However you can probably get away with writing your own RoutePartDriver and emitting a custom shape with your own template, then hiding the ordinary routepart editor using Placement. I think routepart automatically slugifies the title when it publishes anyway.
But if you hit any difficulties with that, you should probably just build your own part anyway.