Right now the self type is a type constructor / higher-kinded type, but it is the only part of our type system like that and so is not terribly useful. We should change it be like other type parameters---but a bit special, since it is implicitly defined---and maybe later add higher-kinded types in a more disciplined way.
Note: I have a patch that does this, it is in its final testing phases.