Extract HandlerConfigurationApi abstract class from Api

The methods in HandlerConfigurationApi will be exposed to the
HandlerConfiguration implementation only. To protect the API methods
from other part of the program that depends on the Api class, the
methods are extracted as the HandlerConfigurationApi class.
HandlerConfiguration depends on HandlerConfigurationApi

This commit is a refactoring to reduce unnecessary dependency. The
HandlerConfiguration class implementation now depends on the
HandlerConfigurationApi class instead of the Api class.
Extract TimeApi abstract class from Api

The methods in TimeApi will be exposed only to classes that need a
clock. To protect the API methods from other part of the program that
depends on the Api class, the methods are extracted as the TimeApi
class.
Extract PselectApi abstract class from Api

The methods in PselectApi will be exposed to the Awaiter implementation
class. To protect the API methods from other part of the program that
depends on the Api class, the methods are extracted as the PselectApi
class.
Awaiter depends on PselectApi

This commit is a refactoring to reduce unnecessary dependency. The
Awaiter class implementation now depends on the PselectApi class instead
of the Api class.
Add HandlerConfigurationApiFake test helper class

The new class is a copy of the SignalNumberSetFake and SigactionApiFake
classes, which will be removed soon in favor of the new class.
Add TimeApiFake test helper class
Add HandlerConfigurationApiDummy test helper class
Add PselectApiStub test helper class
Use new test helpers for Awaiter tests

The new test doubles do not depend on irrelevant API classes.
Remove obsolete API test helper classes
Rename ApiImpl.cc to Api.cc

This commit reverts 0e1edc8. The Api.cc file that contained utility
functions has been removed, so the main implementation of Api can be
moved back to Api.cc.
Merge pull request #103 from magicant/refactor/api

Split API class into function-wise collection of classes