irb> module M; def foo; 'M#foo'; end; end
irb> class C; class << self; include M; end; end
irb> puts C.foo
M#foo
irb> puts C.new.foo
NoMethodError: undefined method `foo' for #<C:0xb74a8e24>
irb> class C; include M; end
irb> puts C.new.foo
M#foo

include M は self に M のインスタンスメソッドをクラスメソッドとして追加する
このときクラスメソッドと呼ぶとわけがわからなくなるので特異メソッドとか呼んだりする
M のクラスメソッドは M = Class.new('M') のようなイメージで生成されたオブジェクト M にくっついてるメソッドなので
include や extend で外に持ち出すことはできない
include や extend して使いたいメソッドは M でインスタンスメソッドとして定義する