You are gonna want to check the facing value in hasCapability and getCapability and if it is anything, but null say you don't have it or it doesn't exist.
Setting breakpoints is very simple. Go to the right of the line you want the program to pause at and right click. Depending on how far you went and your version of eclipse you should either see a box where it gives you some options or a blue-ish circle. Now go to your slabs class and set the breakpoint just after your call setSoundType. Launch in debug mode instead of run mode with is the little bug instead of the play button at the top. If you need more ask.
No I said the method is now called setSoundType() and it takes a SoundType. Choonster said to get the sound Type reference it from the SoundType class. Not make a new instance.
No that is not how it is used, the write function returns a value because it takes what is saved to the NBTTagcompound and puts it into the file, the read should just take the data out of the NBTTagcompound and put it back into fields.
It actually only seems to be certain Blocks. For example I can do Blocks.DIAMOND_ORE, but not to either of the Logs. If you really want to override the logs like that use events.