Array를 클래스 형태로 변경

1. Array를 구조체 형태에서 클래스 형태로 변경
Array에 Assign() 함수포인터 추가

1. Array에 대입 동작을 하는 Assign() 함수 포인터 추가
2. 복사 연산자 추가
FunctionType 분리 및 수정

1. FunctionType을 ExternalApi.h 에서 분리
2. FunctionType을 동적라이브러리에서 호환 가능한 형태로 수정
3. 변경된 FunctionType에 맞게 관련 코드 수정
4. FunctionCallException 제거
ExternalApi 의 함수 포인터를 ExternalApiFunctionTable로 캡슐화

1. ExternalApi 의 함수 포인터를 ExternalApiFunctionTable로 캡슐화
2. 관련 클래스 수정
ExternalApi 객체를 함부로 생성할 수 없도록 수정

1. ExternalApi 객체를 상속을 통해서만 생성할 수 있도록 수정하여, 잘못된 ExternalApi객체가 생성되는 것을 방지함
Array의 함수 포인터를 ArrayFunctionTable로 캡슐화

1. Array의 함수 포인터를 ArrayFunctionTable로 캡슐화
2.  Array객체를 상속을 통해서만 생성할 수 있도록 수정하여, 잘못된 Array객체가 생성되는 것을 방지함
3. 관련 코드 수정
Merge branch 'change_to_function_table_method' into upgrade_binary_compatibility