На самом деле вы не можете расширить объект, потому что это создаст два объекта, и объект по определению существует только один раз (правка: ну, это не совсем так, поскольку определение объекта может быть в классе или методе).
Для ваших целей попробуйте следующее:
object X {
}
object Y {
def a = 5
}
implicit def xToY(x: X.type) = Y
println(X.a)
На самом деле он не расширяется, но позволяет вызывать для него новые методы, которые были определены ранее.