MockDatabase 생성자 추가 + session 사용 가능

MockDatabase를 이용해 DB Mocking을 하던 중 몇 가지 불편한 점이 있어 수정했습니다.

 1. `MockDatabase`를 만들 때 `Base`(declarative_base로 만든 그거) 혹은 `engine`을 선택 지정할 수 있습니다. `engine`을 지정할 경우 기존처럼 `engine`에 적용된 metadata를 가져오고, `Base`를 지정할 경우 Base에 지정된 metadata를 기반으로 새로 만듭니다.
 2. `MockDatabase.session()`을 통해 세션 객체를 가져올 수 있습니다. MockDatabase는 기본 엔진대로만 쓰신다면 in-memory DB이므로, 세션 여러 개로 인해 부하 걸리는 건 고려하지 않으셔도 됩니다.

coverage report를 보니 ValueError 부분이 커버리지 측정 대상에서 계속 무시되는데, tox에서 설정한 것 때문에 그런가요? 우선은 그런 거 없다고 가정하고 테스트 작성했으니 저거 빼도 `mock.py` 커버리지는 100% 나올 겁니당.
이 부분 필요 없지 않나 싶습니다.