Hmm, try a regular function name rather than one inside ABT table. I always used to have problems calling functions within a table within a function call for some reason. Other than that difference your code is almost identical to my own. The only other difference is I use the first parameter in the event registration as the name of the addon but I think it only needs to be unique rather than a specific name.
Try this variation and see if it works. If it does then hopefully one of the Lua experts can explain why your way doesn't work, cos I have no idea why.
Lua Code:
local function AddonLoaded(code, addOnName)
if (addOnName == "BookTracker") then
SLASH_COMMANDS["/mybooks"] = ABT.showBookWindow
end
end
EVENT_MANAGER:RegisterForEvent("bookTrack", EVENT_ADD_ON_LOADED , AddonLoaded)