KillerSam's method would probably be best if you want the player to go around turns and such, but here is the (slightly edited) Sonic script:
Pastebin link
Every time you want to boost a player, you would thread the function speed( [player entity here] );
Keep in mind you'll want to edit the [DAMAGE ORIGIN] and [DAMAGE DIRECTION], which are both (x, y, z) vectors.
You may or may not need the admin portion of the script, but when Sonic was made, admin players could not be boosted from damage.
For the slippery part of the slide, you need to find a pre-existing material that lets a player slide on it, or make your own
with these settings.