Device-to-Device based Proximity Service (Architecture, Issues, and Applications)