FIX heading error message to provide more info

헤딩 (`#heading`)이 잘못되었을 때 나타나는 에러 메세지가 너무 모호해서 사용자가 알아듣기 힘듭니다.

다음과 같은 메세지들이 이유를 더 잘 나타내도록 변경했습니다:

- Headings should start from H1

        Headings should start from H1 but found: <H2>헤딩</H2>

- Invalid level of headings

        Invalid level of headings: expected H1 or H2 but found <H3>나 여기 아니야?</H3>

- Duplicate paths not allowed

        Duplicate paths not allowed: 나 또 나오면 안돼?



이렇게 표현하기 위해 `validate()` 메소드 대신 `is_invalid()`라는 메소드를 추가해 이유를 설명하도록 바꾸었습니다. 이렇게 하면 기존에 의도했던 대로 에러 이유를 재사용할 수 있습니다.
이름이 마음에 안 들면... 적당히 바꿔주세요 



---
`commit message:`


change:

- add `toc_generator.is_invalid` method to return error msg and
- `wiki_page.validate_new_content` calls `is_invalid` instead of `validate`
- and use the reason returned for error message
- `toc_generator..validate` is left for backward compatibility, if any

provides:

- 'Headings should start from H1' returns explicit error heading
- 'Invalid level of headings' tells you which and why
- 'Duplicate paths not allowed' shows you which one