Never ended up getting it to a releasable state ;P
Here's possibly the latest version:
http://www.hiveworkshop.com/forums/pastebin.php?id=d9atlw
After using various ways of doing movement over the years, I think that the method I use (components) is actually much easier.
Here's how it works:
Instead of a velocity variable and an angle variable, you have two velocity variables:
velocity x and velocity y
I'll call them:
dx
dy
(d = delta, meaning the change in x/y)
Every tick:
car x = car x + dx
car y = car y + dy
When you accelerate, you simply change dx/dy based on acceleration and angle:
dx = dx + acceleration * cos(angle)
dy = dy + acceleration * sin(angle)
You can do the same for braking by simply having a negative acceleration.
What I also like to do is include "drag", basically slowing down the car based on how fast it's going.
Every tick:
dx = dx * 0.9
dy = dy * 0.9
This, along with acceleration, gives your cars a built-in top speed.
But what you really should do... is include gear changing as well :D